首页 > 解决方案 > 两步自动布局

问题描述

我目前正在为 iOS 应用程序构建一个 UI 组件。通常,组件的宽度应该是 350pt,我使用自动布局在组件内部设置:

self.widthAnchor.constraint(equalToConstant: 350.0).isActive = true

现在,如果没有足够的空间(由于组件之外的其他限制),我希望组件变得更小,但不是流畅 - 我希望组件仅在两种可能的尺寸之间交替 - 通常为 350pt,如果有则为 300pt没有空间容纳 350pt。这是否可以以某种方式实现?

示例项目:

https://www.icloud.com/iclouddrive/055TkWS8aLqDhFDOPi-7qi8EA#LayoutExample.zip

我创建了一个非常简单的示例项目来说明问题。它包含一个自定义组件 ( MyComponent),它是一个带有四个按钮的堆栈视图。该组件嵌入在主视图控制器中,并设置了自动布局以确保它不会流出屏幕。这在较大的设备上效果很好,但是组件对于 iPhone SE 和 iPhone 4 的屏幕来说太大了。在这种情况下,我希望组件变成另一个尺寸(在项目中,组件通常是 500pt,应该是 300pt在较小的设备上)。

原因

我正在寻找这种行为的原因几乎都与设计有关。该组件不应该以多种尺寸存在,而只能以两种特定尺寸存在 - “正常”尺寸和用于正常尺寸不适合的情况下的较小尺寸。

标签: iosswiftautolayoutdynamic-resizing

解决方案


推荐阅读