ios - 在 iOS 6 中启用自动布局,同时保持向后兼容 iOS 5

标签 ios ios5 backwards-compatibility ios6 autolayout

在利用 iOS 6 的新自动布局功能的同时仍然提供与早期版本 iOS 上的旧设备的兼容性的最佳方式是什么?

最佳答案

可以在每个 .storyboard 或 .xib 文件上启用或禁用自动布局。只需选择特定文件并使用 Xcode 中的文件检查器修改“使用自动布局”属性:

autolayout property in the File inspector

使用启用自动布局的接口(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 版本,例如:

enter image description here

您也可以为每个 Storyboard和 XIB 文件创建两个版本,并使用 6.0 目标启用的自动布局和旧目标启用的另一个版本,例如:

enter image description here

然后您将 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/

相关文章:

ios - 在 iOS 应用程序中下载并解压文件

ios - App瘦身过程中出现iTunes Connect Errors,你的App瘦身不了?

ios - 无法将数据追加到 NSMutableData 中,出现段错误 11

iphone - 将模型层基于 NSManagedObject 的负面后果是什么(如果有的话)?

ios - Xcode 4 项目的 Git 忽略文件

iphone - 没有角标(Badge)/警报/声音的 APNS

ios - 将 CoreData 添加到现有的 iOS 项目 - 无法获取 NSManagedObjectModel

android - 当我开发Android应用程序时,我想在较低的Android版本中使用较高API的方法。怎么做?

java - 将 Finalize() 与装饰模式一起使用

java 1.5 和 java 1.6 之间的 java.sql.Connection 兼容性问题