为什么iOS 7和iOS 8中的autolayout表现不同?

时间:2015-07-06 13:53:01

标签: ios ios7 ios8 autolayout constraints

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

有任何帮助吗?我不知道如何处理这件事。

提前致谢

1 个答案:

答案 0 :(得分:3)

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

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

每当您尝试从XCode 6中的故事板添加新约束时,默认情况下会勾选“约束到边距”。此选择的含义是在iOS 8中使用新属性添加约束。

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

如果您正在为iOS 7和8开发应用程序,最好“解开”Constrain to Margins。

Reference: you should also check this great tutorial