iOS Auto Layout vs Springs&支柱

时间:2013-09-11 10:43:47

标签: autolayout ios7

一年前,我看过几个关于Auto Layout优点的Apple WWDC主题演讲,但是当我在真实世界的项目中尝试它们时,我体验到当你在Storyboard上移动一些UI元素时,它会破坏一半约束,使自动布局的所有好处无效。

直到现在我一直在使用Springs& Struts非常成功,并且与KVO一起观察视图的 frame 路径,只需几行代码即可优雅地处理大部分旋转重新调整。

所以现在iOS 7问世了,我有一个问题:我可以继续成功使用Springs& Struts仅适用于iOS 7应用程序并避免使用自动布局?或者我这样做会失去什么?学习和掌握在不同情况下使用自动布局的技巧可能需要几天的时间,所以我真的很感激一些有争议的建议。


已解决:感谢Max的回答,我开始深入研究Auto Layout;虽然Null在他的回答中是正确的 - 你实际上可以使用Springs& iOS 7上的Struts没有太大麻烦,Auto-Layout功能强大。

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

  • 要删除约束,您实际上不需要执行古老的萨满雨舞蹈。您删除它并且布局进入警告模式,指示您需要解决的问题才能使自动布局工作。

  • 当你移动东西时,你的约束不会改变;仅在Interface Builder中查看框架更改。

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

  • 这是WWDC 2013会话的链接,演示如何在Xcode 5中使用所有这些。您需要Apple开发者帐户才能查看。

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

3 个答案:

答案 0 :(得分:22)

自动布局是未来,而Springs& Struts已成为过去。如果你继续使用Springs&随着新标准 - 自动布局 - 变得普遍,Struts你将处于劣势。

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

对于iOS 7,它还处于早期阶段,虽然我不确定其含义是什么, iOS 7 UI Transition Guide特别提到使用自动布局将简化转换过程:

  

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

     

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

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

答案 1 :(得分:4)

是的你仍然可以使用Springs& iOS7中的Struts,它可以在我的beta应用程序中运行,虽然我很难修复我的视图,但最终它可以工作。

请考虑阅读以下内容:

  

如果您的应用程序已使用自动布局,则使用开发工具   自动调整布局到用户的查看设备   分辨率和方向,你过渡到iOS7将是公平的   直截了当。如果没有,我们建议您评估是否应该   开始。你应该开始的最大原因是现在使用iOS7   用户可以更改文本大小,以及您的文本大小   反过来应用程序将通过更新来尊重这一点   布局以支持所需的文本大小。如果你正在使用“弹簧和   Struts“或程序化布局,那么你将需要花费   相当多的时间操纵视图以获得您的布局   对。这当然也会影响您支持的决策   iOS6的。

参考here

答案 2 :(得分:1)

您应该使用Auto layout,因为它是使用约束的更新方式