(一)没有导航栏的viewController适配方法
1.首先创建一个测试工程,根视图是一个UIViewController,在view上添加一个button,frame为(0,0,100,40),运行结果如图:

button和状态栏重叠了,也就是说,在没有导航栏的情况下,代码运行在iOS7上,内容向上偏移了20px,通过查阅资料,找到两种解决方法:
(1)设置self.view.bounds,代码如下:
运行结果:
这种方法需要更改每一个viewController,较为麻烦
2.设置window,在appdelegate.mapplication: didFinishLaunchingWithOptions:方法中添加代码如下:
这种方法可以影响所有的subview。
运行之后发现状态上的内容看不到了:
解决方法:在info.plist文件中添加View controller-based status bar appearance项,设置为NO。
(二)有导航栏的viewController适配方法
现在将根视图改为UINavigationController,不设置任何属性,运行结果:
可以看到button被导航栏覆盖了,只要在viewDidLoad中设置以下self.view的edgesForExtendedLayout属性就行了,self.edgesForExtendedLayout = UIRectEdgeNone;再运行一下: