iOS导航控制器常用函数与navigationBar常用属性
2015-09-23 14:47
405 查看
导航控制器常用函数触发时机
当视图控制器的View将要出现时触发
- (void)viewWillAppear:(BOOL)animated
当视图控制器的View已经出现时触发
- (void)viewDidAppear:(BOOL)animated
当视图控制器的View将要消失时触发
- (void)viewWillDisappear:(BOOL)animated
当视图控制器的View已经消失时触发
- (void)viewDidDisappear:(BOOL)animated
当由前一个界面,push下一个界面时,如A pushB,四个方法执行顺序A(ViewWillDisappear)>B(viewWillAppear)>A(viewDidDisappear)>B(viewDidAppear)
当由后一个界面pop前一个界面时,如B popA,四个方法执行顺序B(viewWillDisappear)>A(viewWillAppear)>B(viewDidDisappear)>A(viewDidAppear)
navigationBar常用属性
一.对navigationBar直接配置,所以该操作对每一界面navigationBar上显示的内容都会有影响(效果是一样的)
1.修改navigationBar颜色
self.navigationController.navigationBar.barTintColor = [UIColorredColor];
2.关闭navigationBar的毛玻璃效果
self.navigationController.navigationBar.translucent =NO;
3.将navigationBar隐藏掉
self.navigationController.navigationBarHidden = YES;
4.给navigationBar设置图片
不同尺寸的图片效果不同:
1.320 * 44,只会给navigationBar附上图片
2.高度小于44,以及大于44且小于64:会平铺navigationBar以及状态条上显示
3.高度等于64:整个图片在navigationBar以及状态条上显示
[self.navigationController.navigationBarsetBackgroundImage:[UIImage imageNamed:@"32050"]forBarMetrics:UIBarMetricsDefault];
二.为每一个界面的navigationBar上显示的内容单独定制(每个界面显示内容不一样)
单独定制,修改视图控制器的navigationItem
1.设置界面的title
self.navigationItem.title = @"远东大开发”;
2.修改titleView(中间显示视图)
UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:@[@"分组", @"好友"]]; self.navigationItem.titleView =segment;[segment release];
3.修改navigationBar的颜色self.navigationController.navigationBar.barTintColor= [UIColor whiteColor];
4.修改navigationBar,右边显示内容
UIBarButtonItem *right = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:selfaction:@selector(add:)];
self.navigationItem.rightBarButtonItem = right;
[right release];
5.修改navigationBar,左侧显示内容
UIBarButtonItem *left = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:selfaction:@selector(add:)];
self.navigationItem.leftBarButtonItem = left;
[left release];
将NavigationBar设置透明(仅将指定视图控制器进行透明处理),步骤如下:
1.在视图控制器的头文件中实现UINavigationControllerDelegate,
例如:@interface PicturePreviewViewContro
ller: UIViewController<<span style="color: rgb(255, 0,0);">UINavigationControllerDelegate>
2.在实现类中加入这个代理的方法及具体操作如下:
- (void)navigationController:(UINavigationController *)navigationControllerwillShowViewController:(UIViewController *)viewControlleranimated:(BOOL)animated {
// 如果进入的是当前视图控制器
if (viewController == self) {
// 背景设置为黑色
self.navigationController.navigationBar.tintColor = [UIColorcolorWithRed:0.000 green:0.000 blue:0.000 alpha:1.000];
// 透明度设置为0.3
self.navigationController.navigationBar.alpha = 0.300;
// 设置为半透明
self.navigationController.navigationBar.translucent =
YES;
} else {
//进入其他视图控制器
self.navigationController.navigationBar.alpha = 1;
// 背景颜色设置为系统默认颜色
self.navigationController.navigationBar.tintColor = nil;
self.navigationController.navigationBar.translucent =NO;
}
}
当视图控制器的View将要出现时触发
- (void)viewWillAppear:(BOOL)animated
当视图控制器的View已经出现时触发
- (void)viewDidAppear:(BOOL)animated
当视图控制器的View将要消失时触发
- (void)viewWillDisappear:(BOOL)animated
当视图控制器的View已经消失时触发
- (void)viewDidDisappear:(BOOL)animated
当由前一个界面,push下一个界面时,如A pushB,四个方法执行顺序A(ViewWillDisappear)>B(viewWillAppear)>A(viewDidDisappear)>B(viewDidAppear)
当由后一个界面pop前一个界面时,如B popA,四个方法执行顺序B(viewWillDisappear)>A(viewWillAppear)>B(viewDidDisappear)>A(viewDidAppear)
navigationBar常用属性
一.对navigationBar直接配置,所以该操作对每一界面navigationBar上显示的内容都会有影响(效果是一样的)
1.修改navigationBar颜色
self.navigationController.navigationBar.barTintColor = [UIColorredColor];
2.关闭navigationBar的毛玻璃效果
self.navigationController.navigationBar.translucent =NO;
3.将navigationBar隐藏掉
self.navigationController.navigationBarHidden = YES;
4.给navigationBar设置图片
不同尺寸的图片效果不同:
1.320 * 44,只会给navigationBar附上图片
2.高度小于44,以及大于44且小于64:会平铺navigationBar以及状态条上显示
3.高度等于64:整个图片在navigationBar以及状态条上显示
[self.navigationController.navigationBarsetBackgroundImage:[UIImage imageNamed:@"32050"]forBarMetrics:UIBarMetricsDefault];
二.为每一个界面的navigationBar上显示的内容单独定制(每个界面显示内容不一样)
单独定制,修改视图控制器的navigationItem
1.设置界面的title
self.navigationItem.title = @"远东大开发”;
2.修改titleView(中间显示视图)
UISegmentedControl *segment = [[UISegmentedControl alloc]initWithItems:@[@"分组", @"好友"]]; self.navigationItem.titleView =segment;[segment release];
3.修改navigationBar的颜色self.navigationController.navigationBar.barTintColor= [UIColor whiteColor];
4.修改navigationBar,右边显示内容
UIBarButtonItem *right = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:selfaction:@selector(add:)];
self.navigationItem.rightBarButtonItem = right;
[right release];
5.修改navigationBar,左侧显示内容
UIBarButtonItem *left = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:selfaction:@selector(add:)];
self.navigationItem.leftBarButtonItem = left;
[left release];
将NavigationBar设置透明(仅将指定视图控制器进行透明处理),步骤如下:
1.在视图控制器的头文件中实现UINavigationControllerDelegate,
例如:@interface PicturePreviewViewContro
ller: UIViewController<<span style="color: rgb(255, 0,0);">UINavigationControllerDelegate>
2.在实现类中加入这个代理的方法及具体操作如下:
- (void)navigationController:(UINavigationController *)navigationControllerwillShowViewController:(UIViewController *)viewControlleranimated:(BOOL)animated {
// 如果进入的是当前视图控制器
if (viewController == self) {
// 背景设置为黑色
self.navigationController.navigationBar.tintColor = [UIColorcolorWithRed:0.000 green:0.000 blue:0.000 alpha:1.000];
// 透明度设置为0.3
self.navigationController.navigationBar.alpha = 0.300;
// 设置为半透明
self.navigationController.navigationBar.translucent =
YES;
} else {
//进入其他视图控制器
self.navigationController.navigationBar.alpha = 1;
// 背景颜色设置为系统默认颜色
self.navigationController.navigationBar.tintColor = nil;
self.navigationController.navigationBar.translucent =NO;
}
}
相关文章推荐
- IOS多选单选相册图片
- iOS loadView,viewDidLoad,viewDidUnload用法
- IOS 四种保存数据的方式
- iOS socket 连接第三方库asyncsocket 和GCDasyncsocket
- iOSARC下block,代理声明属性
- iOS之 NSTimer(二)
- 关于Cocoapods更新的问题
- iOS——iOS9适配和xcode7适配
- AVAudioSession
- iOS 之 MVC 开发模式
- iOS MD5加密算法
- 项目适配iOS9遇到的一些问题及解决办法(更新两个小问题)
- iOS9适配
- JS判断客户端是否是iOS或者Android或者ipad(二)
- 初探 iOS8 中的 Size Class
- iOS开发之assign retain copy strong weak 的区别
- IOS9后自定义大头针无法正常显示
- iOS GCD与NSOperation的差别
- 键盘弹出高度和遮挡问题
- iOS objc_msgSend 报错解决方案