免费开源的iOS开发学习平台

UINavigationController介绍:4-UINavigationBar

UINavigationBar继承自UIView,它是UINavigationController中的一个重要属性,因此,我们可见的导航栏样式主要(不是全部)是由UINavigationBar决定的,其影响的主要是除导航栏中按钮和标题之外的样式,例如背景颜色、背景图片等等,而导航栏中左右两侧的按钮和中间的标题是在子控制器中设置的。这样的实现方式,既可以保证导航栏总体样式的统一(由UINavigationController的UINavigationBar决定),又可以兼顾每个子控制器的功能定制灵活性。

UINavigationBar介绍

UINavigationBar继承自UIView,因此我们可见的导航栏的总体样式是由其决定的。另外,导航栏外观的定制主要包括两大内容:

  • UINavigationBar自身的外观属性:如背景颜色,文字颜色、BarStyle、背景图片等等,所有子控制器都会使用的公共样式。
@property(nonatomic,readonly) UINavigationBar *navigationBar;
  • UINavigationBar上的UINavigationItem:NavigationBar上的按钮都是UINavigationItem对象

一个导航控制器的创建过程中,会先创建一个NavigationBar,然后NavigationBar会创建对应控制器的NavigationItem。

UINavigationBar的外观属性

UINavigationBar中提供的有关样式设置主要属性和方法有:

  • 导航栏整体样式
@property(nonatomic,assign) UIBarStyle barStyle;
  • 导航栏文字颜色
@property(null_resettable, nonatomic,strong) UIColor *tintColor;
  • 导航栏背景颜色
@property(nullable, nonatomic,strong) UIColor *barTintColor ;
  • 设置导航栏背景图片
- (void)setBackgroundImage:(nullable UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics;

获取子控制器的UINavigationItem

UINavigationBar类中也提供了用于获取在该控制器中的所有UINavigationItem对象,用于管理UINavigationItem的相关属性主要包括如下几个。

@property(nullable,nonatomic,copy) NSArray <UINavigationItem *>*items;
@property(nullable, nonatomic,readonly,strong) UINavigationItem *topItem;
@property(nullable, nonatomic,readonly,strong) UINavigationItem *backItem;