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

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

2.关系图

四者关系图.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]; 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容