【问题标题】:Advantages of setting Constraints vs Setting Frames of UIViews设置约束与设置 UIViews 框架的优点
【发布时间】:2015-04-15 15:24:33
【问题描述】:

设置约束与简单地设置 UIView 的框架相比有什么优势?基于 UIScreen.MainScreen.Bounds 或 View.Bounds 不能简单地设置框架的约束可以做什么?

【问题讨论】:

  • 您应该观看 2012 年 WWDC 的自动布局视频(其中有 3 个)。使用自动布局可以做很多事情,如果设置框架,这些事情会很困难并且需要大量代码。
  • 谢谢你的建议,我一定会的。

标签: ios uiview xamarin nslayoutconstraint autolayout


【解决方案1】:

设置框架并不能保证在框架更改(通过旋转)时调整大小。自动布局通过根据框架和相对大小调整视图来保证这一点。您很可能会在多方向应用程序中使用自动布局。

【讨论】:

  • 当您说多方向时,您是指使用横向和纵向的应用程序吗?例如,与纵向与倒置相反?
  • 是的。纵向和倒置不需要换帧。
  • 我不相信你的回答。无论如何,我总是在 layoutSubviews 或 viewWillLayoutSubviews 中编写我的框架代码,并将所有计算写成与其他所有内容的关系。所以方向变化,文本大小变化,都可以很好地表现出来,而无需使用单一的约束。也比约束更容易阅读。
【解决方案2】:

设置约束意味着您不再需要考虑框架。您不再需要考虑计算间距和将项目放在一起,也不必考虑在不同屏幕上调整大小。

您真正需要考虑的是,您希望如何将视图放置在彼此之间或与屏幕相关的位置。这大大简化了 UI 代码,因为它消除了所有程序布局。

简单地说,AutoLayout 是在屏幕上放置视图并让一切正常工作的最佳方式。它应该在大多数情况下使用。

【讨论】:

    【解决方案3】:

    使用自动布局约束,我永远不必担心设置框架或处理多种屏幕尺寸的框架(运行 iOS 8 的 iPhone 有 4 种不同尺寸)。

    自动布局的好处

    • 根据不同的屏幕尺寸自动调整
    • 自动调整横向到纵向(反之亦然)的方向变化

    【讨论】:

    • 说你有 4 个标签,从上到下,你将如何使用自动布局定位这些标签。我的意思是你有 3 种约束:第一个标签和视图顶部,2 个标签之间,最后一个标签和视图底部。我将如何指定这些约束,以便它不会过多地拉伸它们之间的空间,也不会拉伸标签本身的高度?我会给出基于百分比的空间/距离/高度还是只是固定数量(对于 iPhone5、6、plus、iPad mini、iPad Air、iPad Pro 不同)
    猜你喜欢
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多