【问题标题】:iOS 9 Safe Area Top constraint of xib and storyboard is differentiOS 9 Safe Area Top 约束的 xib 和 storyboard 不同
【发布时间】:2023-03-16 00:02:01
【问题描述】:

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

UIViewController 从 storyboard 创建,我设置 viewController 的红色 subView 的 view.top 等于 safe area top,红色的 view 就在 statusBar 的下方。

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

从storyboard和xib创建的viewControllers是同一个类,也许从storyboard创建的和xib有一些不同的设置,我尝试取消选择所有storyboard选择选项,但没有找到有区别的那个。

谁能解释一下?谢谢!

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

【问题讨论】:

    标签: ios swift ios-autolayout safearealayoutguide


    【解决方案1】:

    XIB 和旧 iOS 版本的安全区指南存在向后兼容性问题,因为 XIB 文件没有它们。

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

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

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

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

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

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

    【讨论】:

    • 感谢您的解释和解决方案!
    猜你喜欢
    • 2021-02-02
    • 2019-05-29
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    相关资源
    最近更新 更多