UINavigationController介绍:8-UINavigationItem
UINavigationItem类的对象主要用于导航栏上显示的按钮以及标题,一般来说,每个子控制器需要显示的标题以及按钮都不相同,因此,在UIKIT框架中,对于每个子控制器需要显示在导航栏上的标题和按钮,都统一在子控制器中定制。
UINavigationItem的常用属性
UINavigationItem类的对象包含了用于设置导航栏的左侧、右侧以及中间视图的属性。其中:中间可以显示一个UIView类型的titleView,左右两侧可以分别显示一个或者多个按钮。需要注意的是,显示在导航栏两侧的按钮是UIBarButtonItem类的对象,不是UIButton类。在UINavigationItem类中,定义了如下几个与导航栏按钮相关的属性。
- 中间的标题视图
@property(nullable, nonatomic,strong) UIView *titleView;
- 左侧/右侧单个按钮
@property(nullable, nonatomic,strong) UIBarButtonItem *leftBarButtonItem;
@property(nullable, nonatomic,strong) UIBarButtonItem *rightBarButtonItem;
- 左侧/右侧设置多个按钮。当我们需要在导航栏两侧设置多个按钮时,可以创建若干个UIBarButtonItem对象,然后把这些对象放到leftBarButtonItems或rightBarButtonItems数组中。
@property(nullable,nonatomic,copy) NSArray <UIBarButtonItem *> *leftBarButtonItems ;
@property(nullable,nonatomic,copy) NSArray <UIBarButtonItem *> *rightBarButtonItems ;
- 标题,如果设置了该属性,titleView不生效,注意:UIViewController类也有一个title属性可以用于设置导航栏的标题,但UINavigationItem的title优先级要高
@property(nullable, nonatomic,copy) NSString *title;
- 导航栏提示语。效果如下图所示。
@property(nullable,nonatomic,copy) NSString *prompt;
UINavigationItem对象的创建
在UINavigationItem类的API中提供了initWithTitle:方法用于UINavigationItem对象的创建。使用该方法创建的UINavigationItem对象只有中间的标题,左右两侧的按钮(UIBarButtonItem类)需要另外定制。
- (instancetype)initWithTitle:(NSString *)title;
UIBarButtonItem类
UINavigationItem类中定义的按钮,不是UIButton类的,而是UIBarButtonItem类的,并且从UIBarButtonItem类的继承关系来看,其父类并不是UIView,而是UIBarItem,因此,UIBarButtonItem类的并不具备诸如:backgroundColor之类的属性,这是需要程序员特别关注的地方。
@interface UIBarButtonItem : UIBarItem <NSCoding>
在UIBarButtonItem类的定义中,也提供了几种常用的实例化方法,比较常用的有如下两个。
- 实例化一个只显示文字的按钮
- (instancetype)initWithTitle:(nullable NSString *)title style:(UIBarButtonItemStyle)style target:(nullable id)target action:(nullable SEL)action;
- 实例化一个只有图标的按钮
- (instancetype)initWithImage:(nullable UIImage *)image style:(UIBarButtonItemStyle)style target:(nullable id)target action:(nullable SEL)action;
- 当我们需要定制UIBarButtonItem类的外观时,可以使用initWithCustomView:方法,该方法传入一个UIView的参数,可以显示定制样式
- (instancetype)initWithCustomView:(UIView *)customView;
文章发布时间为: October 28th , 2016 at 10:12 am
最后编辑时间为: September 13th , 2017 at 03:02 pm
本文由 99ios 创作,转载请注明出处
最后编辑时间为: September 13th , 2017 at 03:02 pm
本文由 99ios 创作,转载请注明出处