在添加了一个导航条后,view被导航条给覆盖到了,并没有从导航条的下面开始。在ios7中,UIViewController中新引入了一个新特性,edgesForExtendedLayout。这个属性的默认值是UIRectEdgeAll。当你的容器是UINavigaitonController的时候,默认布局是从状态栏的顶部开始的,这就是为什么设置的控件都往上偏移的原因。
为了解决这个问题,可以有两种做法
1.设置edgesForExtendedLayout
//方法一,这种做法可以很好的实现我们想要的结果,只不过这样设置之后导航栏的颜色是默认的颜色,类似灰色,如果不是我们想要的,后面可以更改导航栏的颜色
self.edgesForExtendedLayout = UIRectEdgeNone; //view不需要拓展到整个屏幕
2.设置导航条的透明度
//方法二,这种方法也是我们经常使用的方法,这样设置为导航栏不透明,导航栏不会遮挡view,并且导航栏颜色表现为白色。
self.navigationController.navigationBar.translucent = NO;