iOS自动布局与弹簧和支架

23
一年前,我看了几场关于Auto Layout好处的苹果WWDC主题演讲,但当我在实际项目中尝试使用它们时,我发现当你稍微移动Storyboard上的某个UI元素时,会破坏一半的约束,抵消了Auto Layout的所有好处。
直到现在,我一直很成功地利用弹簧和支架,并结合使用KVO观察视图的帧路径,优雅地处理大多数旋转重新对齐,只需几行代码。
那么现在iOS 7发布了,我有一个问题:我能否仅在iOS 7应用程序中成功地利用Springs & Struts而避免使用Auto Layout?或者我做这样做会失去任何东西吗?学习和掌握在不同场景下使用Auto Layout的技能可能需要我几天时间,因此我真的很感激一些明确的建议。
已解决:由于Max的答案,我开始深入研究Auto Layout;虽然Null在他的答案中是正确的-你实际上可以在iOS 7上使用Springs & Struts而不会有太多麻烦,但Auto-Layout是强大的。
显然,在Xcode 5中,以下内容得到了修复:
要删除您实际上不需要执行古老的雨之舞蹈。删除它后,布局进入“警告”模式,指示您需要解决的问题,以使Auto Layout正常工作。
当您移动事物时,您的约束不会改变;只有Interface Builder中视图框架会改变。
当接口构建器中计算出来的框架实际上与布局约束计算出来的框架不同时,接口构建器将使用红色虚线指示该元素的运行时框架。终于做对了。谢谢,苹果。
这是一个链接到WWDC 2013会话,其中演示了如何在Xcode 5中利用所有这些功能。您需要苹果开发人员帐户才能查看。
  • https://developer.apple.com/wwdc/videos/index.php?id=406
  • 现在我的选择是自动布局。感谢大家。

    3个回答

    23

    自动布局是未来,而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或手动计算使用框架的指标。


    你知道有好的教程吗?我还没有找到一个真正有效的。谢谢。 - Rayfleck
    Ray Wenderlich的http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2。查看我的其他有关自动布局的答案,以获取更多参考资料等。 - Max MacLeod
    Spring和Spruts非常适合简单的情况,而自动布局对于大多数我的需求来说太复杂了,而Spring和Spruts只需要几个点击即可完成设置。 - Renetik
    所以基本上,除非你在回应文本,否则没有好处,这就是你的意思。这也是我的经验。 自动调整大小需要短暂的设置时间,但约束需要大约10-20倍的时间。 如果您制作了一个自动调整大小的customView,然后将其放入响应这些更改的子类化视图中...之后您不必编写任何代码,仍然可以节省时间。 我还没有找到使用AutoLayout的真正理由。 别让我开始谈tableViews需要额外的代码来缓存单元格布局,否则你会得到不流畅的滚动。 - Stephen J

    4

    是的,你仍然可以在iOS7中使用Springs & Struts,在我的beta应用程序中它能正常工作,尽管我花了很长时间来修复我的视图。

    请仔细阅读以下内容:

    如果您的应用程序已经使用了自动布局(Auto Layout),即开发工具会自动调整布局以适应用户的查看设备分辨率和方向,则您转换到iOS7将相对简单。如果没有,请评估是否应该开始使用。您应该开始使用的最大原因是,现在使用iOS7时,用户可以更改其文本大小,您的应用程序也应更新布局以支持所需的文本大小。如果您正在使用“Spring and Struts”或编程布局,则需要花费相当长的时间来操作视图,以便正确地获取布局。这当然也会影响您决定是否支持iOS6。

    参考此处


    1

    由于其使用约束的更新方式,您应该使用自动布局


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接