問題描述
在利用 iOS 6 新的自動布局功能的同時,還能在早期版本的 iOS 上提供與舊設備的兼容性的最佳方式是什么?
可以在每個 .storyboard 或 .xib 文件上啟用或禁用自動布局.只需選擇特定文件并使用 Xcode 中的文件檢查器修改使用自動布局"屬性:
使用啟用自動布局的接口文件并將部署目標設置為 6.0 之前的 iOS 版本會導致編譯錯誤,例如:
<塊引用>MainStoryboard.storyboard:3 中的錯誤:iOS 6.0 之前版本的自動布局
在項目中使用自動布局并仍然保持與 iOS4-5 的兼容性的一種選擇是創建兩個 指出的那樣,如果您從代碼加載情節提要文件并且不使用主要Storyboard"設置在Xcode中設置初始storyboard,可以使用單個target.
對我來說,維護多個目標和接口文件所增加的復雜性成本似乎超過了使用自動布局的好處.除了少數特殊情況,如果需要 iOS4-5 兼容性,您可能最好使用普通的舊自動調整大小(或代碼中的 layoutSubViews).
What is the best way to take advantage of the new auto layout features of iOS 6 while still providing compability with older devices on earlier versions of iOS?
Autolayout can be enabled or disabled on each .storyboard or .xib file. Just select the particular file and modify the "Use Autolayout" property using the File inspector in Xcode:
Using autolayout enabled interface files with the deployment target set to an iOS version prior to 6.0 results in compilation errors, e.g.:
Error in MainStoryboard.storyboard:3: Auto Layout on iOS Versions prior to 6.0
One of your options to use autolayout in a project and still preserve compatibility with iOS4-5 is to create two targets: one for deployment target iOS 6.0 and one for an earlier iOS version, e.g.:
You can create two versions for each of your storyboard and XIB files as well and use the autolayout enabled with the 6.0 target and the other with the legacy target, e.g.:
You then add MainStoryBoardAutoSize to the iOS6 target's Build phases and the other file to the iOS4 target. You can learn more about using multiple targets 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.
For me, the cost of the added complexity of maintaining multiple targets and interface files seems to outweigh the benefits of using autolayout. Except for a few special cases, you are probably much better to use plain old auto sizing (or layoutSubViews from code) exclusively if iOS4-5 compatibility is required.
這篇關于在 iOS 6 中啟用自動布局,同時保持向后兼容 iOS 5的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!