xib和Storyboard的iOS 9安全区域顶部约束不同

时间:2018-11-01 10:21:25

标签: ios swift ios-autolayout safearealayoutguide

在iOS 9,iPhone 5上,iOS 10及更高版本上没有发生

从情节提要中创建UIViewController,我将viewController的红色subView的view.top设置为安全区域top,红色视图位于statusBar下方。

如果从xib文件创建viewController,请使用init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)并将红色subView的view.top设置为安全区域顶部,红色视图与statusBar位于相同的origin.y。如下所示:

从情节提要和xib创建的viewControllers是同一类,也许从情节提要和xib创建的viewControllers具有一些不同的设置,我尝试取消选择所有情节提要的select选项,但没有找到能起到作用的一个。

有人可以解释吗?谢谢!

此问题的回购:https://github.com/codingingBoy/SafeAreaDemo

1 个答案:

答案 0 :(得分:0)

由于XIB文件没有XIB和较旧的iOS版本的Safe-Area指南,因此存在向后兼容性问题。

  

在当前的Xib向后部署行为(iOS 10和更低版本)中,安全区域的约束将转换为超级视图,因为XIB没有顶部和底部布局指南。

     

这可能无法实现所需的布局行为,我们建议您使用以下选项之一来解决这种情况:

     

1)将视图和布局移到情节提要视图控制器中

     

2)使用IB插座来约束相关的(顶部和底部)约束,并在安装视图后以编程方式将它们替换为顶部/底部布局指南的约束

     

3)将视图安装为子视图,并以编程方式向顶部/底部布局指南和侧面添加约束。

参考:https://forums.developer.apple.com/thread/87329