23

一年前,我看过一些关于自动布局好处的 Apple WWDC 主题演讲,但是当我在现实世界的项目中尝试它们时,我体验到,当你在 Storyboard 上稍微移动一些 UI 元素时,它会打破一半的约束,抵消了自动布局的所有好处。

到目前为止,我一直在非常成功地使用 Springs 和 Struts,并结合 KVO 观察框架路径进行查看,优雅地处理了大部分旋转重新对齐,只需要几行代码。

所以现在随着 iOS 7 的推出,我有一个问题:我能否继续成功地将 Springs & Struts 仅用于 iOS 7 应用程序并避免使用 Auto Layout?还是我这样做会失去什么?学习和掌握在不同场景中使用自动布局的技能对我来说可能需要几天时间,所以我非常感谢一些有争议的建议。


已解决:感谢 Max 的回答,我开始深入研究 Auto Layout;虽然Null他的回答是正确的——你实际上可以在 iOS 7 上使用 Springs & Struts 而不会遇到太多麻烦,Auto-Layout 很强大。

显然在 Xcode 5 中,修复了以下问题:

  • 要删除约束,您实际上不需要执行古老的 shamanic dance of rain。您删除它并且布局进入警告模式,指示您需要解决的问题以使自动布局工作。

  • 当你移动东西时,你的约束不会改变;仅界面生成器中的视图框架更改。

  • 当 Interface Builder 中的 frame 与使用布局约束计算的 frame 实际不同时,Interface Builder 会用红色虚线指示该元素的运行时 frame。最后它是正确的。谢谢,苹果。

  • 这是 WWDC 2013 会议的链接,演示了如何在 Xcode 5 中利用所有这些内容。您需要苹果开发人员帐户才能查看。

所以我现在的选择是自动布局。谢谢大家。

4

3 回答 3

23

Auto Layout 是未来,Springs & Struts 是过去。如果您继续使用 Springs & Struts,您将处于劣势,因为新标准 - 自动布局 - 变得普遍。

此外,Springs & Struts 对复杂视图无效。自动布局功能要强大得多。

iOS 7 还处于早期阶段,虽然我不确定具体的含义是什么,但iOS 7 UI 过渡指南特别提到使用自动布局将简化过渡过程:

如果您的应用程序使用自动布局,您的工作会更轻松。在 Xcode 5 中,自动布局可以帮助应用适应新的 UI 元素指标并适当地响应文本大小的动态变化。如果您正在转换 iOS 6 应用程序或需要同时支持 iOS 6 和 iOS 7,则自动布局特别有用。

如果您没有使用自动布局,现在可能是开始的最佳时机,尤其是如果您需要支持多个版本的应用程序。如果您使用手动或程序化布局技术,您有责任确保在文本大小发生变化时适当调整布局。

就个人而言,我从 Xcode 4.6.3 开始就一直在使用自动布局。最初的学习曲线是痛苦的,但之后它真的变成了使用的乐趣。我绝对不会回到 Springs & Struts 或使用框架手动计算指标。

于 2013-09-11T15:43:04.987 回答
4

是的,您仍然可以在 iOS7 中使用 Springs & Struts,它可以在我的 beta 应用程序中使用,尽管我在修复视图时遇到了麻烦,但最终它可以工作了。

请考虑阅读以下内容:

如果您的应用程序已经使用 Auto Layout(自动调整布局以适应用户查看设备的分辨率和方向的开发工具),那么您向 iOS7 的过渡将相当简单。如果没有,我们建议您评估是否应该开始。您应该开始的最大原因是,现在在 iOS7 中,用户可以更改他们的文本大小,而您的应用程序反过来会通过更新布局以支持所需的文本大小来尊重这一点。如果您使用“Springs and Struts”或程序化布局,那么您将需要花费大量时间来操作视图以使您的布局正确。这当然也会影响您做出支持 iOS6 的决定。

参考这里

于 2013-09-11T10:50:04.803 回答
1

您应该使用自动布局,因为它是使用约束的更新方式

于 2014-11-30T22:45:03.730 回答