标签:
想必大家都遇到这种情况,设置的y坐标明明为0,但显示的内容还是被导航栏遮住一部分,比如一个简单的tableview,如下图:
大家可以看到第0行和第一行的部分都被遮挡住了,这是因为在ios7 之后,引入了一个新的属性:edgesForExtendedLayout,默认值是UIRectEdgeAll,当你用UINavigationController时,默认的布局就是从状态栏的顶部开始,所以前两行正如看到的那样向上偏移了64像素。
@property(nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll
解决方法有以下几种:
方案一:将edgesForExtendedLayout的属性设置为UIRectEdgeNone,这样布局就从导航栏下面开始了
self.edgesForExtendedLayout = UIRectEdgeNone;
方案二:导航栏半透明属性设置为NO
在iOS 6之前(包括iOS 6)translucent默认就是NO,在iOS 7就默认是YES了。
self.navigationController.navigationBar.translucent = NO;
将导航栏的半透明属性关闭掉,布局也是从导航栏下面开始了。
方案三:
self.automaticallyAdjustsScrollViewInsets = YES;
设置为no的话 要自己改变y的坐标和高度
edgesForExtendedLayout和automaticallyAdjustsScrollViewInsets属性
标签:
原文地址:http://www.cnblogs.com/gaoshen/p/5026688.html