使用比率时在 Interface Builder 中发出平衡约束

Posted

技术标签:

【中文标题】使用比率时在 Interface Builder 中发出平衡约束【英文标题】:issue balancing constraints in Interface Builder when using ratio 【发布时间】:2017-09-07 04:08:06 【问题描述】:

我在界面生成器中构建的警报视图的约束存在问题。

当屏幕是 iPhone 5 尺寸时,我希望前导和尾随约束来压缩图像并使其更小,我在这里也设置了 1:1 的比例约束。到目前为止,这很好用。但是,当屏幕变大时,例如iPhone7+ 或 iPad 我希望图像保持相同大小(即界面生成器中的图像大小,iPhone7 大小的画布)。我尝试使用<= 设置图像宽度约束,然后将图像上的前导和尾随约束设置为优先级750。这适用于更大的屏幕,但现在当我回到 iPhone5 屏幕尺寸时,它被破坏了,因为前导和尾随约束的优先级低于比率的优先级。图像大小保持不变。似乎无论我如何处理约束,我都只能获得适用于单个场景 iPhone5 或 iPhone6+ 的尺寸。以前有人遇到过这种问题吗?关于如何处理约束的任何建议?

【问题讨论】:

您是否尝试过使用尺寸等级设置约束? 没有。我该怎么做? 有你的解决方案@kex?? 我不同意重新调整课程大小的方法。各种 iPhone 设备都是同一类,即紧凑宽度和常规高度。问题是我不能 100% 确定你想要达到的目标。也许您可以在每种尺寸上添加它应该是什么样子的快照(手动调整它们),然后我们可以建议哪些约束或(喘气)代码可以达到预期的效果。 【参考方案1】:

尝试探索尺寸等级。在此链接上探索。 https://www.raywenderlich.com/162311/adaptive-layout-tutorial-ios-11-getting-started.

基本上,通过使用它,您可以针对尺寸类别(术语指设备屏幕的不同尺寸)为同一元素设置单独的约束。

【讨论】:

【参考方案2】:

您可以通过这种方式实现它。它适用于各种尺寸的 iPhone。

包含图片的UIView有3个关键点

将前导和尾随约束设置为大于或等于 (>=) 在超级视图中水平居中视图。此约束与之前的约束相结合将导致视图保持居中,即使图像无法再拉伸。 将内容拥抱优先级设置为必需 (1000)。

【讨论】:

以上是关于使用比率时在 Interface Builder 中发出平衡约束的主要内容,如果未能解决你的问题,请参考以下文章

使用 Interface Builder 构建的自定义 UIView 可通过 Interface Builder 访问/定位

如何使用 Interface Builder 设置 UIScreenEdgePanGestureRecognizer?

使用 Interface Builder 进行切换

iOS Update Interface Builder视图框架基于约束

在 Interface Builder 中使用 UITapGestureRecognizers 的问题

Purelayout™ 可以通过 Interface Builder 使用吗?