从iOS11 开始系统风格变成了“贼大”的导航栏标题样式就不展示了 系统app里都有 设置方式可以分为全局设置或者单个页面设置
1.全局设置
[[UINavigationBar appearance] setPrefersLargeTitles:YES];
2.单个页面设置(在viewWillAppear中设置)
    if (@available(iOS 11.0, *)) {
        self.navigationController.navigationBar.prefersLargeTitles = YES;
        self.navigationController.navigationItem.largeTitleDisplayMode =  UINavigationItemLargeTitleDisplayModeAutomatic;
    } else {
        // Fallback on earlier versions
    }
largeTitleDisplayMode
typedef NS_ENUM(NSInteger, UINavigationItemLargeTitleDisplayMode) {
    /// 自动显示大标题或小标题(初始时是大标题,当滑动使大标题隐藏时显示小标题)
    UINavigationItemLargeTitleDisplayModeAutomatic,
    /// 总是显示大标题
    UINavigationItemLargeTitleDisplayModeAlways,
    /// 是总是显示小标题
    UINavigationItemLargeTitleDisplayModeNever,
} NS_SWIFT_NAME(UINavigationItem.LargeTitleDisplayMode);
有这三种类型只有当设置prefersLargeTitles为true是设置的展示方式属性才会生效,当使用大标题的时候大多数使用的都是UINavigationItemLargeTitleDisplayModeAutomatic
说了这么多现在开始列举遇到的问题
1. 之前好用的present出来的带着导航栏的控制器当dismiss后程序莫名其妙的崩溃
这个目前出现这种情况的原因展示不明确,解决方案如果你前一个页面使用了大标题present的页面还需要带着导航栏只需要在present时候加下面两行代码
  //这里的vc是需要模态出来的控制器
    UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:vc];
    if (@available(iOS 11.0, *)) {
        nav.navigationBar.prefersLargeTitles = NO;
        nav.navigationItem.largeTitleDisplayMode =  UINavigationItemLargeTitleDisplayModeNever;
    } else {
        // Fallback on earlier versions
    }
    [self presentViewController:nav animated:NO completion:nil];
2.当前页面存在UITableView或者UICollectionView当下拉或者做上拉的时候大标题的导航栏会闪烁
先看看效果对比

正常的 .gif

不正常的 .gif
很明显不正常的显示在下拉的过程中会出现抖动的情况(对比一下系统的发现的)不废话有可能导致的原因
[UINavigationBar appearance].translucent = NO;
如果是这个发现当用大标题的时候重新赋值为yes 布局也一切正常
        if (@available(iOS 11.0, *)) {
            collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        } else {
            
        }
当时为了适配iOS 11 添加的代码当时记得好像是会有黑边,也是直接注释掉就可以了