【问题标题】:iOS 7 vs iOS 8 Constraints differ in sizesiOS 7 与 iOS 8 约束的大小不同
【发布时间】:2014-12-29 20:46:31
【问题描述】:

在 Interface Builder 中使用 Auto Layout 和 Constraints 时,我注意到当我运行 iOS7 和 iOS8 模拟器时,我会在相同的约束条件下得到不同的结果。

例如,我在 8pts 的 UIButton 上设置了一个非常简单的 Trailing Constraint。在 iOS7 和 iOS8 模拟器上运行时,这些 8pts 的位置看起来非常不同。 iOS8 模拟器似乎给约束增加了几点。就好像 Constraint Delta 的功能需要...

任何想法为什么约束在 iOS7 和 iOS8 上表现不同?

【问题讨论】:

    标签: ios objective-c ios7 ios8 interface-builder


    【解决方案1】:

    原因是 iOS 8 有布局边距,而 iOS 7 没有。您已经在标签边缘和父视图的 margin 之间设置了约束——但在 iOS 7 中没有边距。因此,为了兼容两者,运行时必须做一些事情。因此它在 iOS 7 中将边距视为零,因为它们根本不存在。

    【讨论】:

    • 感谢马特提供的信息,那么适应 iOS7 和 iOS8 之间这种差异的常见做法是什么?
    • 我不知道您想要做什么来“适应差异”。 I 会做的是对父视图的 edge 进行约束,而不是对父视图的 margin 进行约束,以便它在iOS 8 和 iOS 7。
    • 马特,我已经做到了,如果你看上面,我已经添加了我的约束的屏幕截图设置。您可以看到它不是拖到边缘,而是按照您的建议拖到超级视图边缘。
    • 顺便说一句,在您的情况下,干预视图使问题更加复杂。换句话说,是 Superview 的约束有问题。 Label 被限制在 Superview 的边缘,但 Superview 被限制在 superview 的边距。
    • 是的,但是您的视图层次结构比您所揭示的要多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2015-09-16
    • 1970-01-01
    • 2014-09-30
    • 2014-11-28
    相关资源
    最近更新 更多