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

edgesForExtendedLayout、extendedLayoutIncludesOpaqueBars、automaticallyAdjustsScrollViewInsets属性详解 )——转载

时间:2016-04-20 13:30:54      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

edgesForExtendedLayout:

 ios7适配中,布局问题是一个很头痛也很重要的问题,因为在ios7viewController使用了全屏布局的方式,也就是说导航栏和状态栏都是不占实际空间的,状态栏默认是全透明的,导航栏默认是毛玻璃的透明效果。

在IOS7以后 ViewController 开始使用全屏布局的,而且是默认的行为通常涉及到布局,就离不开这个属性 edgesForExtendedLayout,它是一个类型为UIExtendedEdge的属性,指定边缘要延伸的方向,它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,就是说,如果即使视图中上有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。因为一般为了不让tableView 不延伸到 navigationBar 下面, 属性设置为 UIRectEdgeNone

UIRectEdgeAll -- default

技术分享

UIRectEdgeNone 

技术分享

这时会发现导航栏变灰了,处理如下就OK了,self.navigationController.navigationBar.translucent = NO;

automaticallyAdjustsScrollViewInsets :

当 automaticallyAdjustsScrollViewInsets 为 NO 时,tableview 是从屏幕的最上边开始,也就是被 导航栏 & 状态栏覆盖

技术分享

当 automaticallyAdjustsScrollViewInsets 为 YES 时,也是默认行为,表现就比较正常了,和edgesForExtendedLayout = UIRectEdgeNone 有啥区别? 不注意可能很难觉察, automaticallyAdjustsScrollViewInsets 为YES 时,tableView 上下滑动时,是可以穿过导航栏&状态栏的,在他们下面有淡淡的浅浅红色

技术分享

extendedLayoutIncludesOpaqueBars 

首先看下官方解释,默认 NO, 但是Bar 的默认属性是 透明的。。。也就是说只有在不透明下才有用

但是,测试结果很软肋,基本区别不大。。。但是对于解决一些Bug 是还是起作用的,比如说SearchBar的

跳动问题,详情见: 问题多数和这3属性相关。。

 

自定义UIViewconcontroller:

   self.automaticallyAdjustsScrollViewInsets = NO;
    if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
        self.edgesForExtendedLayout = UIRectEdgeTop; //判断系统版本
    }
    self.navigationController.navigationBar.translucent = NO; //这句话的意思就是让导航栏不透明且占空间位置,所以我们的坐标就会从导航栏下面开始算起。

edgesForExtendedLayout、extendedLayoutIncludesOpaqueBars、automaticallyAdjustsScrollViewInsets属性详解 )——转载

标签:

原文地址:http://www.cnblogs.com/linxiu-0925/p/5411732.html

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