ios11 新添加UINavigationBar的prefersLargeTitles属性

iOS11 UINavigationBar新添加的prefersLargeTitles属性

@property (nonatomic, readwrite, assign) BOOL prefersLargeTitles

大标题,默认为false,当设置为true时,navigation bar会显示大标题,标题显示在左边,如果页面有scrollview控件或父控件为这个时,当向上滑动页面,标题会变小直到跟之前显示一样,同时标题位置也会发生变化。

在滑动的过程中,通过打印navigation bar的fram发现,navigation bar的高度会跟着变化。

正常这个属性会no时,navigation bar为44;为yes时,navigation bar为96

跟这个属性一起添加的还有navigationItem的largeTitleDisplayMode属性,这个属性是配合navigation bar的大标题使用的。当navigation bar启用prefersLargeTitles后,这个属性才会生效,可以控制某个单独的控制器中的大标题显示模式,有三个可选值:

ios11 新添加UINavigationBar的prefersLargeTitles属性

使用方法

self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;

UINavigationItemLargeTitleDisplayModeAutomatic与上一个navigation item设置的largeTitleDisplayMode相同

UINavigationItemLargeTitleDisplayModeAlways:总是启动大标题,刚开始有个误解,always并不是说当scrollview滚动的时候,navigation bar一直是大标题模式,而是指,不管上个控制器设置的是什么,这个控制器都启用大标题。

UINavigationItemLargeTitleDisplayModeNever:总是显示小标题模式,就是我们正常看到的导航栏标题样式