iOS 自动布局 vs Springs & Struts
Posted
技术标签:
【中文标题】iOS 自动布局 vs Springs & Struts【英文标题】:iOS Auto Layout vs Springs & Struts 【发布时间】:2013-09-11 10:43:46 【问题描述】:一年前,我在 Apple WWDC 上看到过几个关于 Auto Layout 好处的主题演讲,但是当我在现实世界的项目中尝试它们时,我发现当你在 Storyboard 上稍微移动一些 UI 元素时,它会破坏一半约束,抵消了自动布局的所有好处。
到目前为止,我一直在非常成功地使用 Springs 和 Struts,并结合 KVO 观察 frame 路径查看视图,优雅地处理了大部分旋转重新对齐,只需要几行代码。
所以现在随着 ios 7 的推出,我有一个问题:我能否继续成功地将 Springs & Struts 仅用于 iOS 7 应用程序并避免使用自动布局?还是我这样做会失去什么?学习和掌握在不同场景中使用自动布局的技能对我来说可能需要几天时间,所以我非常感谢一些有争议的建议。
已解决:感谢 Max 的回答,我开始深入研究 Auto Layout;虽然Null
的回答是正确的——你实际上可以在 iOS 7 上使用 Springs & Struts 而不会遇到太多麻烦,Auto-Layout 很强大。
显然在 Xcode 5 中,以下事情是固定的:
要删除约束,您实际上并不需要执行古代萨满雨之舞。您将其删除,布局进入 警告 模式,表明您需要解决问题才能使自动布局正常工作。
当你移动东西时,你的约束不会改变;仅在 Interface Builder 中查看框架发生变化。
当Interface Builder 中的frame 与使用布局约束计算的frame 实际不同时,Interface Builder 会用红色虚线指示该元素的运行时frame。最后它是正确的。谢谢,苹果。
这是 WWDC 2013 会议的链接,演示了如何在 Xcode 5 中利用所有这些内容。您需要苹果开发者帐户才能查看。
https://developer.apple.com/wwdc/videos/index.php?id=406所以我现在的选择是自动布局。谢谢大家。
【问题讨论】:
【参考方案1】:Auto Layout 是未来,而 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 或使用框架手动计算指标。
【讨论】:
你知道好的教程吗?我还没有找到一个真正有效的。 TIA。 Ray Wenderlich 的 raywenderlich.com/20881/beginning-auto-layout-part-1-of-2 查看我在 Auto Layout 上的其他答案以获取更多参考资料等。 Spring and Spruts 是简单案例的理想选择,而自动布局过于复杂,无法满足我的大多数需求,而 Spring 和 Spruts 只需点击几下... 所以基本上,除非你回复文本,否则没有任何好处,这就是你所说的。这也是我的经验。自动调整大小需要一秒钟的时间来设置,但约束大约需要 10-20 倍。如果您制作了一个自动调整大小的 customView,然后将其放入响应这些更改的子类视图中......之后您不必编写任何代码,然后仍然可以节省时间。我还没有找到使用 AutoLayout 的真正理由。不要让我开始使用 tableViews 在第一次通过后需要额外的代码来缓存单元格布局,以免你得到 jenky 滚动。【参考方案2】:是的,您仍然可以在 iOS7 中使用 Springs & Struts,它可以在我的 beta 应用程序中使用,尽管我在修复视图时遇到了麻烦,但最终它可以使用了。
请考虑阅读以下内容:
如果您的应用程序已经使用自动布局,开发工具 自动调整布局以适应用户的查看设备 分辨率和方向,你过渡到 iOS7 将是公平的 直截了当。如果没有,我们建议您评估是否应该 开始。您应该开始的最大原因是现在使用 iOS7 用户可以更改其文本大小,并且您的 反过来,应用程序将被期望通过更新来尊重这一点 布局以支持所需的文本大小。如果您使用“弹簧和 Struts”或程序化布局,那么你将需要花费 相当多的时间来操作视图以获得您的布局 对。这当然也会影响您做出支持的决定 iOS6.
参考here。
【讨论】:
【参考方案3】:您应该使用Auto layout,因为它使用约束的方式更加更新
【讨论】:
以上是关于iOS 自动布局 vs Springs & Struts的主要内容,如果未能解决你的问题,请参考以下文章
如何管理适用于 iOS 7 和 iOS 6.0 的自动布局约束
iOS 7 和 8 中 UITableViewCells 的自动布局指标不同