也是网上查到的资料,这里记一下,好记性不如烂笔头
一:状态栏
ios9之前的话
1:在info.plist文件中增加
View controller-based status bar appearance:NO
这样就可以单个控制器自己控制状态栏了
2:自己控制状态栏
[UIApplication sharedApplication].statusBarHidden = YES;
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
ios9之后的话,上面的方法被废弃了,但是也是可以用的,这里介绍新的方法
1:在info.plist文件中增加
View controller-based status bar appearance:YES
2:在你想控制状态栏的控制器实现系统方法
- (BOOL)prefersStatusBarHidden
是否要隐藏状态栏,返回yes表示隐藏
- (UIStatusBarStyle)preferredStatusBarStyle
返回一个状态栏的状态枚举
3:想要实时的控制状态栏,需要调用下面这个方法
[self setNeedsStatusBarAppearanceUpdate];
更新状态栏
4:就算这样,你发现状态栏的样式也无法更改
这时候,需要在新建一个UINavigationController的Category,实现下面的方法
- (UIViewController *)childViewControllerForStatusBarStyle {
return self.visibleViewController;
}
- (UIViewController *)childViewControllerForStatusBarHidden {
return self.visibleViewController;
}
5:self.visibleViewController表示当前控制器
二:导航栏
1:translucent:导航栏的一个特殊属性,默认为yes,会让你的导航栏半透明
self.navigationController.navigationBar.translucent = NO;
取消导航栏透明
2:取消导航栏透明后,界面的起始坐标会发生变化,默认帮你计算了导航栏的高度
self.extendedLayoutIncludesOpaqueBars=YES;
视图延伸不考虑透明的Bars(这里包含导航栏和状态栏)
这里设置yes意思就是延伸到边界,从最顶部开始为坐标点
3:继承UIScrollview的控件默认会自适应,空出导航栏的位置
self.automaticallyAdjustsScrollViewInsets = NO;
取消自适应,不自动计算导航栏高度
先记下来,以备不时之需
网友评论