ios - 为什么自动布局在 iOS 7 和 iOS 8 中表现不同?

标签 ios ios7 ios8 autolayout constraints

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

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

提前致谢

最佳答案

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

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

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

如果您的应用程序的部署目标是 iOS 7 及更高版本并且您的任何约束具有此布局边距,XCode 将提示并警告“Layout attributes relative to the layout margin on iOS prior to 8.0”。

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

Reference: you should also check this great tutorial

关于ios - 为什么自动布局在 iOS 7 和 iOS 8 中表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31247689/

相关文章:

ios - UITableView 动态单元格高度仅在滚动后才正确

ios - 如何从 NSDate 变量中获取工作日和/或月份名称?

ios7 - iOS 7 是否支持 Apple pay 或 iOS 中是否有任何其他基于支付的良好 API?

cordova - PhoneGap 3、iOS7 和 CDVBarcodeScanner.o

ios - UIActivityViewController 排除所有 UIActivityCategoryAction

swift - 快速覆盖 setter

ios - SwiftUI:如何为文本添加自定义修饰符

ios - 如何将数据发送到新 View

ios - 随机生成的数组仅适用于按钮

ios - XCTestCase setUp 方法的目的是什么?