-
iOS11中为导航栏新增了大标题模式,默认情况下是关闭的,效果的话可以看iOS11下系统中的很多应用都使用了大标题模式,例如设置和文件。
控制是否开启大标题模式的属性是UINavigationBar的prefersLargeTitles属性, 可以在任何能够拿到navigationBar的地方开启和关闭大标题功能,默认情况下是关闭的。
@property (nonatomic, readwrite, assign) BOOL prefersLargeTitles UI_APPEARANCE_SELECTOR API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
- 项目中开启大标题模式后。默认所有带有导航栏的控制器都显示大标题,当然苹果提供了API让每个控制器决定自己是否显示大标题的属性。iOS11之后给UINavigationItem添加了一个叫做largeTitleDisplayMode的枚举类型的属性用于设置当前控制器大标题的展示模式。
/*
///
默认值就是Automatic,该状态下是否显示大标题依赖于上一个控制器的该属性,如果导航控制器堆栈中最后一个控制器的属性也是Automatic,那么是否显示依赖于navigationBar的prefersLargeTitles属性
UINavigationItemLargeTitleDisplayModeAutomatic,
/// 一直显示
UINavigationItemLargeTitleDisplayModeAlways,
/// 一直不显示
UINavigationItemLargeTitleDisplayModeNever,
*/
@property (nonatomic, readwrite, assign) UINavigationItemLargeTitleDisplayMode largeTitleDisplayMode API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
- 只有当navigationBar开启大标题模式之后,单个控制器设置UINavigationItem的大标题展示模式才会生效,否则没有意义。
- 对于大标题模式下控制器切换的时候的动画效果系统已经帮我们做好了,无论是一直显示大标题还是大标题和小标题之间的切换都非常流畅,效果感人。