UINavigationController,UINavigationBar,UINavigationItem,UIViewController的相互关系

项目中出现率很高的几个角色,简单说一下相互关系
1.本质
UIViewController : 基本上一个控制器对应着一个具体的页面
UINavigationController : 继承于UIViewController ,是管理一系列控制器的容器。有一个UINavigationBar的属性
UINavigationBar:继承与UIView,是每一个控制器上方的视图,可以做一定的定制,由UINavigationController管理
UINavigationItem : 继承于NSObject,给UINavigationBar视图提供内容,由UIViewcontroller管理

2.关系图

UINavigationController,UINavigationBar,UINavigationItem,UIViewController的相互关系_第1张图片
四者关系图.png

3.一些简单应用
a:更改导航栏的文字和背景颜色

//set NavigationBar 背景颜色&title 颜色  
[self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:20/255.0 green:155/255.0 blue:213/255.0 alpha:1.0]];  
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],UITextAttributeTextColor,nil]];

b:添加多个按钮item

UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action: nil nil];  
UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action: nil nil];  
NSArray *itemsArr = @[shareItem,cameraItem];  
self.navigationItem.rightBarButtonItems = itemsArr;  

c:自定义后退按钮的文字和颜色

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:nil action:nil];  
self.navigationItem.backBarButtonItem = item;  

d:自定义返回item

//自定义返回按钮  
UIImage *backButtonImage = [[UIImage imageNamed:@"fanhui.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 0, 0)];  
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];  
//将返回按钮的文字position设置不在屏幕上显示  
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(NSIntegerMin, NSIntegerMin) forBarMetrics:UIBarMetricsDefault]; 

你可能感兴趣的:(UINavigationController,UINavigationBar,UINavigationItem,UIViewController的相互关系)