zoukankan      html  css  js  c++  java
  • edgesForExtendedLayout ios7新特性导致autoLayout自动布局结果不正确

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

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

     

    self.edgesForExtendedLayout = UIRectEdgeNone;



     

    来解决UINavigationBar透明的问题。设置了UIRectEdgeNone之后,你嵌在UIViewController里面的UITableView和UIScrollView就不会穿过UINavigationBar了,同时UIView的控件也回复到了iOS6时代。

     

    不过这个对于Status Bar在iOS7上面的变化是无效的,正确的说应该是部分无效。在存在Navigation部分或者Tabbar部分的时候,上面的代码可以使得Status Bar也不载透明(有待验证,毕竟UIViewController的可用空间被控制了),但是在没有这两个部分的时候,Status Bar依旧是会记入UIView范围的。


     

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

     

    修复这个问题的快速方法就是在方法- (void)viewDidLoad中添加如下一行代码:

     

     
    self.edgesForExtendedLayout = UIRectEdgeNone; 

     

    这样问题就修复了。


  • 相关阅读:
    Unity贴图压缩优化处理
    Unity游戏开发图片纹理压缩方案
    devexpress panelcontrol 里面控件自适应宽度
    devexpress winform spinedit 右边上下箭头去掉
    devexpress layoutcontrolitem 里面控件tabindex不起作用
    jar包生成本地maven ,以供pom引用
    C# 计算代码执行效率
    C# 使用队列
    C#遍历获取所有文件
    C#多线程等待所有子线程结束
  • 原文地址:https://www.cnblogs.com/allen123/p/4504055.html
Copyright © 2011-2022 走看看