在 xcode 5 中部署目标 5.1 时如何使用自动布局

Posted

技术标签:

【中文标题】在 xcode 5 中部署目标 5.1 时如何使用自动布局【英文标题】:how to use auto layout when deployment target 5.1 in xcode 5 【发布时间】:2013-10-04 05:06:10 【问题描述】:

我在 Xcode 5 中打开我当前的 xcode 4.6 版本项目。它在 ios 7 中的 I Phone 和 I Pad 都可以正常工作。 但是我想使用 Xcode 5 将与 IOS 5 兼容的应用程序开发为 UP。但是当我将部署目标设置为 5.0 并运行时,会显示更多的自动布局错误。当我取消勾选时,它就起作用了。但在这种情况下,我们无法在 IOS 6 + 中使用自动布局运行应用程序。

以前当我使用 xcode 4.6 并将部署目标设置为 5 时,在编译时没有发现问题。仅在运行时发生异常。所以在那种情况下,我为 IOS 5 使用了没有自动布局的单独故事板。

但在 xcode 5 中我不能使用该方法,因为在编译时会发生错误。那么我该如何解决呢??

【问题讨论】:

自动布局在 iOS5 中不可用,因此出现错误。 Apple 在 iOS6 中引入了 Autolayout。 简短回答:你不能。存在于较高 SDK 中的类不能在较低 SDK 上使用。 如果您希望您的代码在 iOS5 和 iOS6+ 上运行,您可以通过编程方式编写您的自动布局代码并放置一个编译器宏来检查操作系统版本。所以每个自动布局代码都必须用编译器包装宏语句确保它只为 iOS 6+ 编译.. 但如果你问我,那将是一团糟 【参考方案1】:

您不能在 iOS 5 上使用自动布局。就这么简单。 iOS 5 根本没有自动布局类,因此当您在 iOS 5 设备上启动应用程序时,它会在运行时出错。

您需要在 xib 和故事板中关闭自动布局,设置弹簧和支柱,并根据需要编写 layoutSubviewsviewDidLayoutSubviews 以正确布局视图。

由于您必须让您的应用在没有自动布局的情况下运行,因此让您的应用在可用时使用自动布局可能没有意义。尝试仅在某些设备上使用自动布局将意味着更多的代码、更多的测试和更多的混乱。将您的部署目标更改为 iOS 6.0 并仅使用自动布局,或者在所有版本的 iOS 上使用旧布局系统。

【讨论】:

以上是关于在 xcode 5 中部署目标 5.1 时如何使用自动布局的主要内容,如果未能解决你的问题,请参考以下文章

如何将部署目标设置为 5.0.1

Mountain Lion 上 xCode 4.5.1 中的 iOS 4 和 iOS 5 SDK

如何在 xcode 4.6.2 中使用 iphone 模拟器 5.1

运行项目时弹出警告,无法在选定的目标 xcode 4.5.1 上运行 [重复]

如何在 XCode5 中将部署目标更改为 5.1.1 [重复]

将 Xcode“部署目标”或“基础 SDK”设置为“point oh one”(0.0.1)版本