ios - iOS 9 Safe Area Top 约束的 xib 和 storyboard 不同
问题描述
在 iOS 9、iPhone 5 上,在 iOS 10 及更高版本上未发生
UIViewController 从情节提要创建,我将 viewController 的红色 subView 的 view.top 设置为安全区域顶部,红色视图就在 statusBar 的下方。
如果从 xib 文件创建 viewController,使用init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
并设置红色 subView 的 view.top 等于安全区域顶部,红色视图与 statusBar 位于同一 origin.y。如下所示:
从 storyboard 和 xib 创建的 viewController 是同一个类,也许从 storyboard 和 xib 创建有一些不同的设置,我尝试取消选择所有 storyboard 选择选项,但没有找到有区别的那个。
任何人都可以解释这一点吗?谢谢!
这个问题的回购:https ://github.com/codingingBoy/SafeAreaDemo 。
解决方案
旧 iOS 版本的 XIB 和安全区域指南存在向后兼容性问题,因为 XIB 文件没有它们。
在当前的 Xib 向后部署行为(iOS 10 和更早版本)中,对安全区域的约束将转换为超级视图,因为 XIB 没有顶部和底部布局指南。
这可能无法实现您想要的布局行为,我们建议您使用以下选项之一解决这种情况:
1)将视图和布局移动到情节提要视图控制器
2) 将 IB Outlets 用于相关(顶部和底部)约束,并在安装视图后以编程方式将它们替换为顶部/底部布局指南的约束
3) 将视图安装为子视图,并以编程方式将约束添加到顶部/底部布局指南和侧面。
推荐阅读
- python - Python:改变列表列表的形状
- java - PDFBOX - 如果多个文件附加到 pdf,则附加的最后一个文件不会打开
- javascript - 我是否错误地使用了 PromptOptions?
- android - 在 Flutter 中刷新屏幕而不引起用户注意
- sql-server - 当我的 xml 使用 SQL Server 2017 具有多个文本节点时,如何从我的 xml 中检索特定文本节点(第一个、第二个或最后一个)?
- reactjs - 无法在带有汇总的反应组件中导入 SVG 图像
- typescript - 如何将字体与 rollupjs 捆绑在一起?
- c# - 如何在 UWP MediaPlayer 中启用随机播放模式
- typescript - 在 VS Code 中使用名为 typescript 文件的相同文件夹作为默认文件
- pip - 安装 Jupyterthemes 时出现问题