Xcode 自动布局:最适合正方形

Posted

技术标签:

【中文标题】Xcode 自动布局:最适合正方形【英文标题】:Xcode autolayout: best fit for square 【发布时间】:2016-08-22 16:59:50 【问题描述】:

我有一个自定义方形视图,可以根据需要进行缩放。我的自定义视图只是覆盖 drawRect 来呈现内容。

包含视图是矩形,但不是正方形。纵横比因设备方向和类型而异。我需要调整我的自定义视图,使其在容器中占据最大空间,但保持 1:1 的纵横比。

如果可能的话,我想在 IB 而不是代码中设置约束。我有以下限制:

在容器中垂直居中 容器中的水平居中 纵横比 (1:1) 内容模式设置为按比例填充

我尝试了各种方法来使自定义视图适合容器,这给了我 IB 布局错误,例如:

宽度 高度

我不能设置任何大小相等,因为我不知道容器是垂直的还是水平的......

这似乎是一项基本任务,但我想不通。将正方形放入矩形的最佳方法是什么?

【问题讨论】:

【参考方案1】:

保留已有的约束,并添加新的约束:

宽度和高度等于超级视图,但优先级低于纵横比约束 宽度和高度

【讨论】:

【参考方案2】:

前三个约束是对的,去掉其他的并设置

前导或尾随和 顶部或底部

对超级视图的约束

现在选择新添加的约束,使它们 >=(大于或等于)为 0。

现在您需要为您的视图提供宽度或高度约束,它可以从其子视图中获得它,就像我们为滚动视图所做的那样,或者为您的视图提供等于 320 的宽度并使其也大于或等于。

【讨论】:

以上是关于Xcode 自动布局:最适合正方形的主要内容,如果未能解决你的问题,请参考以下文章

使用自动布局创建一个大正方形的网格

自动布局:具有相等宽度/高度的方形图像视图

iOS 自动布局:这可以用 IB 完成吗?

Xcode 7.3 (swift 2) 中的自动布局

UILabel 自动布局适合

使用自动布局制作完美的正方形