这种情况 主要是 三个属性 的设置问题:
1 automaticallyAdjustsScrollViewInsets
2 navigationBar.translucent
3 self.edgesForExtendedLayout
以下是三种情况分析:
self.automaticallyAdjustsScrollViewInsets = NO;
iOS 7 viewcontroller新增属性automaticallyAdjustsScrollViewInsets,即是否根据按 所在界面的navigationbar与tabbar的高度,自动调整scrollview的 inset.
默认值是YES,选择YES表示你允许视图控制器调整它内部插入的滑动视图来应对状态栏,导航栏,工具栏,和标签栏所消耗的屏幕区域。
如果你设置为NO呢,就代表呀你要自己调整你插入的滑动视图,比如你的视图层次里面有多于一个的滑动视图。
第二种
iOS7以上系统,self.navigationController.navigationBar.translucent默认为YES,
self.view.frame.origin.y从0开始(屏幕最上部)。
此时若是添加代码self.edgesForExtendedLayout = UIRectEdgeNone(iOS7.0以后方法);
self.view.frame.origin.y会下移64像素至navBar下方开始。
self.edgesForExtendedLayout = UIRectEdgeNone;将view下移64,另外如果有tabBar,高度会缩减40,无需我们手动设置
self.edgesForExtendedLayout = UIRectEdgeTop;将view不会下移64 。
第三种
self.navigationController.navigationBar.translucent = NO,
self.view.frame.origin.y会下移64像素至navBar下方开始。
若防止下沉 设置 ,self.edgesForExtendedLayout = UIRectEdgeTop;将view不会下移64 。
demo : http://download.youkuaiyun.com/detail/bravegogo/9701389