• 明天再整理,睡觉!


    从iOS7开始,苹果默认App都是全屏App,意思就是:所有视图控制器的根view都以屏幕的左上角为该view的frame原点开始展示。

    在iOS 7中,苹果引入了一个新的属性,叫做[UIViewController setEdgesForExtendedLayout:],它的默认值为UIRectEdgeAll。当你的容器是navigation controller时,默认的布局将从navigation bar的顶部开始。这就是为什么所有的UI元素都往上漂移了44pt。有时会加上顶部tool bar的高度 20, 20+44 = 64

         

         ios默认viewController的View会延伸到最顶端,即使上面有导航条、状态栏,可以设置edgesForExtendedLayout属性

         

         edgesForExtendedLayout是一个类型为UIExtendedEdge的属性,指定边缘要延伸的方向。

         因为iOS7鼓励全屏布局,它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,就是说,如果即使视图中上有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。

    这时候用到导航栏时,往往会出现该view被导航栏挡住情况。

    最明显的是用到UITableView时,第一行单元格的数据会被UINavigationBar遮挡。

    ios7,为了达到全屏效果的app,官方增加了几个属性:

    1 @property(nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll
    2  @property(nonatomic,assign) BOOL extendedLayoutIncludesOpaqueBars NS_AVAILABLE_IOS(7_0); // Defaults to NO, but bars are translucent by default on 7_0.  
    3  @property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES

    属性edgesForExtendedLayout,意思是:边缘向四周延伸
    edgesForExtendedLayout 值是结构体。默认值是UIRectEdgeAll,也就是上、下、左、右都延伸直到填充满整个屏幕
    self.edgesForExtendedLayout = UIRectEdgeNone;// 1. UIRectEdgeNone:不要往四周边缘延伸 (即按照iOS7之前的传统来展示) ,设置完这一句,压入桟的控制器frame的y值就是从导航条下边缘开始。
     
  • 相关阅读:
    spring中各个模块的作用
    《Spring实战》学习笔记-第四章:面向切面的Spring
    《Spring实战》学习笔记-第四章:面向切面的Spring
    Centos7下永久修改mysql5.6最大连接数
    Prefix-List
    Route-Map
    PBR Lab2
    Lab PBR
    ISIS超载位解决流量黑洞
    ISIS TLV
  • 原文地址:https://www.cnblogs.com/hello-Huashan/p/4780975.html
Copyright © 2020-2023  润新知