iOS使用AutoLayout底部TabBar被遮挡问题

问题描述:

在使用AutoLayout代码布局时,有时会碰到父视图是TabBarController的一个子视图,当我们试图将一个View约束到父视图的底部时,会发现View会被TabBar挡住,比如下图:


iOS使用AutoLayout底部TabBar被遮挡问题_第1张图片
Paste_Image.png

因为在iOS7以上的版本中,视图是默认扩展到全屏的,从(0,0)开始一直到屏幕的右下角。

处理方法

因为底部标签栏的高度默认为49,我们可以设置底部视图的底部约束为49,这样就可以解决问题了,但是如果我们有另一个需求,即购物车界面是TabBarController的一个子视图,也有不作为TabBarController子视图的时候,这时候进行跳转到购物车页面的时候,49约束的问题就依旧存在!!!

为了让视图符合我们的需求,我们可以在父视图的ViewController中进行如下设置:

  • OC代码:
self.edgesForExtendedLayout = UIRectEdgeNone;
  • Swift代码:
this.EdgesForExtendedLayout = UIRectEdge.None;
结果:

这样视图就可以正常显示了,如下图:

iOS使用AutoLayout底部TabBar被遮挡问题_第2张图片
不作为TabBarController子视图时
iOS使用AutoLayout底部TabBar被遮挡问题_第3张图片
作为TabBarController子视图时

附注

此属性也适用于导航栏
当viewcontroller没有scrollview的时候,系统不会自动为其适配64高度,加上该属性就可以自动适配

你可能感兴趣的:(iOS使用AutoLayout底部TabBar被遮挡问题)