在利用 iOS 6 的新自动布局功能的同时仍然提供与早期版本 iOS 上的旧设备的兼容性的最佳方式是什么?
最佳答案
可以在每个 .storyboard 或 .xib 文件上启用或禁用自动布局。只需选择特定文件并使用 Xcode 中的文件检查器修改“使用自动布局”属性:
使用启用自动布局的接口(interface)文件并将部署目标设置为 6.0 之前的 iOS 版本会导致编译错误,例如:
Error in MainStoryboard.storyboard:3: Auto Layout on iOS Versions prior to 6.0
在项目中使用自动布局并仍然保持与 iOS4-5 的兼容性的选项之一是创建两个 targets : 一个用于部署目标 iOS 6.0,一个用于较早的 iOS 版本,例如:
您也可以为每个 Storyboard和 XIB 文件创建两个版本,并使用 6.0 目标启用的自动布局和旧目标启用的另一个版本,例如:
然后您将 MainStoryBoardAutoSize 添加到 iOS6 目标的构建阶段,并将另一个文件添加到 iOS4 目标。您可以了解有关使用多个目标的更多信息 here .
EDIT: As marchinram's answer points out, if you load you storyboard files from code and do not use the "Main Storyboard" setting in Xcode to set the initial storyboard, you can use a single target.
对我来说,维护多个目标和接口(interface)文件所增加的复杂性所带来的成本似乎超过了使用自动布局的好处。除了少数特殊情况,如果需要 iOS4-5 兼容性,您可能最好只使用普通的旧自动调整大小(或代码中的 layoutSubViews)。
关于ios - 在 iOS 6 中启用自动布局,同时保持向后兼容 iOS 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12411980/