UINavigationController,UINavigat
2017-06-25 本文已影响27人
lixiaoshuai
项目中出现率很高的几个角色,简单说一下相互关系
1.本质
UIViewController : 基本上一个控制器对应着一个具体的页面
UINavigationController : 继承于UIViewController ,是管理一系列控制器的容器。有一个UINavigationBar的属性
UINavigationBar:继承与UIView,是每一个控制器上方的视图,可以做一定的定制,由UINavigationController管理
UINavigationItem : 继承于NSObject,给UINavigationBar视图提供内容,由UIViewcontroller管理
2.关系图
四者关系图.png3.一些简单应用
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];