【问题标题】:Why autolayout behaves different in iOS 7 and iOS 8?为什么自动布局在 iOS 7 和 iOS 8 中表现不同?
【发布时间】:2015-09-23 17:00:22
【问题描述】:

例如:我在storyboard 场景中设置了从UIButton 底部到超级视图底部的垂直空间约束,常量为 20。在 iOS 8 设备中运行时,这是正确的显示,但是当在 iOS 7 设备中运行时,看起来这个常数变得更高,并且按钮显示在屏幕上方......我不明白为什么会发生这种情况,因为 autolayout 应该是自 iOS 以来可用7.

有什么帮助吗?我不知道如何处理。

提前致谢

【问题讨论】:

    标签: ios ios7 ios8 autolayout constraints


    【解决方案1】:

    iOS 8 中的一项新功能是布局边距。 Layout Margin 是 iOS 8 的 UIView 中可用的新属性。因此,任何从 UIView 继承的对象都将具有此属性。如果您正在为 iOS 7 和 iOS 8 开发应用程序,则不应使用 Layout Margin(或以智能方式使用布局边距)。

    因此,如果您有任何与布局边距相关的限制,并且在 iOS 7 设备上启动应用程序之前没有进行适当的检查,则应用程序可能会崩溃或对象的排列可能会乱序。

    每当您尝试从 XCode 6 的情节提要中添加新约束时,默认情况下都会勾选“Constrain to Margins”。这个选择的意思是用 iOS 8 中的新属性添加约束。

    如果您的应用程序的部署目标是 iOS 7 及更高版本,并且您的任何约束具有此布局边距,XCode 将抱怨警告“布局属性相对于 iOS 8.0 之前的布局边距”。

    如果您正在为 iOS 7 和 8 开发应用程序,最好“取消勾选”对边距的约束。

    Reference: you should also check this great tutorial

    【讨论】:

    • 此外,每当您在 IB 中创建约束并在约束中看到 Margin 一词时,如果按“alt”键,则可以在没有 Margin 的情况下获得约束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多