《Programming iOS 7》读书笔记 - 窗体大小与状态栏
1、从iOS7开始,状态栏开始变为透明的,根识图占领了整个窗体,包括状态栏后面的20像素高的区域,这种样式无法被改变。iOS6的状态栏是不透明的,窗体的尺寸通常会比屏幕的尺寸要小,可以设置窗体的尺寸为[UIScreen mainScreen].applicationFrame。
2、标题栏与导航栏也变为了透明的,可以通过设置UIViewController的两个属性来改变这种行为(该UIViewController的父亲必须是UINavigationController或者是UITabBarController)。
(1)edgesForExtendedLayout
UIRectEdgeAll,默认值,意为顶部和底部均有覆盖效果,视图部分位于顶栏和底栏的背后。
UIRectEdgeNone,均不覆盖,视图位于顶栏和底栏的中间。
UIRectEdgeTop,仅上部覆盖,视图位于底栏的上部。
UIRectEdgeBottom,仅下部覆盖,视图位于顶栏的下部。
(2)extendedLayoutIncludesOpaqueBars
YES,如果edgesForExtendedLayout允许覆盖,则不管顶栏和底栏是否透明,都覆盖。
NO,默认值,只有当顶栏和底栏透明时才允许覆盖。
3、可以通过topLayoutGuide和bottomLayoutGuide来建立约束。
(1)topLayoutGuide保持在状态栏的底部,如果有顶栏,则保持在顶栏的底部。
(2)bottomLayoutGuide保持在底栏的顶部。
4、状态栏的样式可以通过重写根视图控制器的preferredStatusBarStyle方法来设置,允许返回的可选值为UIStatusBarStyleDefault和UIStatusBarStyleLightContent。
5、状态栏的显示与隐藏可以通过重写根视图控制器的prefersStatusBarHidden方法来设置,返回YES或NO。
6、获得状态栏高度的方法有
(1)[UIScreen mainScreen].applicationFrame.size.height
(2)[UIApplication sharedApplication].statusBarFrame.size.height