码迷,mamicode.com
首页 > Windows程序 > 详细

edgesForExtendedLayout和automaticallyAdjustsScrollViewInsets属性

时间:2015-12-07 18:18:11      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

想必大家都遇到这种情况,设置的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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!