iOS使用AutoLayout底部TabBar被遮挡问题
2016-06-07 本文已影响4408人
lyonLiu
问题描述:
在使用AutoLayout代码布局时,有时会碰到父视图是TabBarController的一个子视图,当我们试图将一个View约束到父视图的底部时,会发现View会被TabBar挡住,比如下图:
Paste_Image.png
因为在iOS7以上的版本中,视图是默认扩展到全屏的,从(0,0)开始一直到屏幕的右下角。
处理方法
因为底部标签栏的高度默认为49,我们可以设置底部视图的底部约束为49,这样就可以解决问题了,但是如果我们有另一个需求,即购物车界面是TabBarController的一个子视图,也有不作为TabBarController子视图的时候,这时候进行跳转到购物车页面的时候,49约束的问题就依旧存在!!!
为了让视图符合我们的需求,我们可以在父视图的ViewController中进行如下设置:
- OC代码:
self.edgesForExtendedLayout = UIRectEdgeNone;
- Swift代码:
this.EdgesForExtendedLayout = UIRectEdge.None;
结果:
这样视图就可以正常显示了,如下图:
不作为TabBarController子视图时 作为TabBarController子视图时附注
此属性也适用于导航栏
当viewcontroller没有scrollview的时候,系统不会自动为其适配64高度,加上该属性就可以自动适配