在开发iOS7的界面的时候,有时候你会发现UIViewController里的subView有时会被导航栏遮盖,原因是iOS7鼓励全屏布局,UIViewController中的self.view的坐标原点是从导航栏的原点开始算起,如果你不想self.view的起始点从导航栏原点开始计算,你只要设定:
self.edgesForExtendedLayout = UIRectEdgeNone;
这个属性的默认值是UIRectEdgeAll,四周编译均延伸。设置完之后你会发现self.view的起始点从导航栏下沿开始,当然这时self.view的高度还是原来的高度,你要手动减去导航栏的高度(iOS7默认导航栏高度为64)。
不过这种设置iOS7是不鼓励的,这样UIView的控件都回到了iOS6时代,而且你回发现当popViewController的时候,self.view相对于导航栏会有延时。
其实在构造subView的时候,你可以手动的减去导航栏的高度也可以达到避免遮盖的问题。