从iOS7开始
新增属性automaticallyAdjustsScrollViewInsets
新增属性edgesForExtendedLayout
新增属性 --Bar.translucent
automaticallyAdjustsScrollViewInsets : 自动调整scrollview的内边距
true : 考虑 statusbar,navbar的高度,scrollview的y 从 statusbar + navbar底部开始算。哪个存在考虑哪个。
false :同正常的view 从屏幕最顶部开始计算。
edgesForExtendedLayout : View扩展延伸
默认值是UIRectEdgeAll, 意味着view会被拓展到整个屏幕,不考虑任何容器的遮挡。
UIRectEdgeNone: 完全不延伸,考虑所有容器的遮挡。结果:去掉navbar、tabbar,剩余的空间是View的frame
UIRectEdgeTop: 往顶部延伸,其余方向不延伸。那么就会self.view.frame是从navigationBar顶部开始计算一直到Tabbar的顶部;
UIRectEdgeBottom: 往底部延伸,其余方向不延伸。那么就会self.view.frame是从navigationBar下面开始计算一直到屏幕底部;
UIRectEdgeLeft:往左边延伸,其余方向不延伸。
UIRectEdgeRight:往右边延伸,其余方向不延伸。
Bar.translucent bar的半透明属性是否开启 默认是true
true:View的frame 从navbar顶部开始计算 延伸到tabbar的底部
false:View的frame从navbar的底部开始计算 延伸到tabbar的顶部
3.modalPresentationCapturesStatusBarAppearance
iOS7以前不能针对每一个UIViewController单独控制状态栏的显示隐藏,只能在需要的时候调用setStatusBarHidden/setStatusBarStyle修改状态栏显示或者样式,iOS7以后,状态栏是透明的。plist参数多了一个View controller-based status bar appearance。
如果View controller-based status bar appearance 为NO,则表示状态栏不受UIViewController的单独控制,那么这个时候状态栏的控制还和iOS7以前的方式一样,在需要修改的地方执行setStatusBarHidden。
而如果设置为YES,则状态栏会根据各个UIViewController的配置改变,UIViewController中如果需要改变状态栏则需要重载以下两个方法:
-
(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;//状态栏样式
} -
(BOOL)prefersStatusBarHidden
{
return NO;//状态栏是否隐藏
}
网友评论