ios - 两步自动布局
问题描述
我目前正在为 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在较小的设备上)。
原因
我正在寻找这种行为的原因几乎都与设计有关。该组件不应该以多种尺寸存在,而只能以两种特定尺寸存在 - “正常”尺寸和用于正常尺寸不适合的情况下的较小尺寸。
解决方案
推荐阅读
- c++ - 为什么我不能在 C++ 中将 volatile 与向量一起使用?
- sql-server - MS SQL MAX 函数
- jmx - 如果从区域中删除数据,为什么不更新 DistributedRegionMXBean 中的 lastModifiedTime?
- javascript - 想要使用正则表达式在javascript中删除句子中数字的数字内的空格
- go - 如何在 Ubuntu 的 go 1.11 中设置 GOPATH 环境变量?我必须编辑什么文件?
- php - 关于购物车中数组项目的 Woocommerce 问题
- python - 基于时间窗口对用户项矩阵列表进行累加函数
- svg - 如何使用 rsvg-convert 成功将 svg 转换为 png?
- laravel - 使用 Laravel 检索关系的关系
- xml - 限制/限制 xsd:choice