iOS在默认情况下,竖屏会显示状态栏,横屏自动隐藏状态栏。而视图控制器的主视图默认位于屏幕顶端,在竖屏时会被顶部状态栏遮挡。如果我们希望不被状态栏遮挡,则需要先判断横竖屏,然后动态显示隐藏状态栏。如果界面中还存在导航栏、分页栏,情况就更复杂一些。总之,自己处理是一件很麻烦的事情。
布局向导
在iOS 7中,苹果引入了Top Layout Guide(顶部布局向导)和Bottom Layout Guide(底部布局向导)的概念,它们是界面中的两个隐藏视图,分别指示当前界面中被顶部条形区域(如状态栏StatusBar、导航栏NavigationBar)和被底部条形区域(如分页栏TabBar)占据的区域。
topLayoutGuide和bottomLayoutGuide是视图控制器的两个属性(上图中的self是当前的ViewController)。其中顶部布局向导的底部为顶部条形区域的最下方,即:
- 如果没有状态栏和导航栏,则为屏幕顶端。
- 如果只有状态栏,则为状态栏下方(20px)。
- 如果只有导航栏,则为导航栏下方(44px)。
- 如果同时有状态栏和导航栏,则为导航栏下方(64px)。
同理,底部布局向导的顶部为下方条形区域的最上方。
这两个布局向导会根据界面的情况动态调整其高度。我们就可以参照这两个布局