根据屏幕高度更改 UIStackView 中项目的高度
Changing the height of items in UIStackView based on Screen height
我用的是最新的UIStackViewsXcode,布局如下:
文本标签
选择器(1 个组件)
文本标签
选择器(1 个组件)
文本标签
选择器(4 个组件)
分段控制(3段)
我有以下 UI 限制条件:
StackViewTop = SafeAreaTop + 8
StackViewLeading = SafeAreaLeading + 8
StackViewTrailing = SafeAreaTrailing - 8
Picker_1 = 96px
Picker_2 = Picker_1 身高
Picker_3 = Picker_2 身高
使用组件的固有尺寸(除了我设置为 96px 的 3 个拾取器)一切都适合 iPhone SE(568px),但是拾取器相当短。在任何其他设备上,有更多的垂直 space 使选择器更高。
当有垂直 space 可用时,我想让三个拾取器将它们的高度增加到它们的固有高度;我无法在 Interface Builder 中找到正确的设置组合来完成这项工作。有办法吗?
这个问题的第二部分是,如果屏幕足够宽,我希望限制堆栈视图的宽度(可能为 512)并居中。
关于你问题的第一部分。
这就是您配置堆栈视图的方式。除了您所做的之外,我还会添加一个大于或等于符号的底部约束。它不会让堆栈视图超出范围。
更新
看了你的 layout 后,我稍微改变了解决方案。
- 拾取器的高度相等配置方式与您相同。
- 顶部选择器的高度限制大于或等于 96。如果有足够的空间,它会让自动布局引擎增加它的大小 space。
- 所有标签和一个段控件都有垂直内容
压缩阻力优先级设置为 1000(必需)。
- 顶部选择器具有垂直内容压缩阻力
优先级设置为 250(低)。
您可以在此 GitHub repository.
中找到我的实现
这是结果。
我用的是最新的UIStackViewsXcode,布局如下:
文本标签
选择器(1 个组件)
文本标签
选择器(1 个组件)
文本标签
选择器(4 个组件)
分段控制(3段)
我有以下 UI 限制条件:
StackViewTop = SafeAreaTop + 8
StackViewLeading = SafeAreaLeading + 8
StackViewTrailing = SafeAreaTrailing - 8
Picker_1 = 96px
Picker_2 = Picker_1 身高
Picker_3 = Picker_2 身高
使用组件的固有尺寸(除了我设置为 96px 的 3 个拾取器)一切都适合 iPhone SE(568px),但是拾取器相当短。在任何其他设备上,有更多的垂直 space 使选择器更高。
当有垂直 space 可用时,我想让三个拾取器将它们的高度增加到它们的固有高度;我无法在 Interface Builder 中找到正确的设置组合来完成这项工作。有办法吗?
这个问题的第二部分是,如果屏幕足够宽,我希望限制堆栈视图的宽度(可能为 512)并居中。
关于你问题的第一部分。
这就是您配置堆栈视图的方式。除了您所做的之外,我还会添加一个大于或等于符号的底部约束。它不会让堆栈视图超出范围。
更新
看了你的 layout 后,我稍微改变了解决方案。
- 拾取器的高度相等配置方式与您相同。
- 顶部选择器的高度限制大于或等于 96。如果有足够的空间,它会让自动布局引擎增加它的大小 space。
- 所有标签和一个段控件都有垂直内容 压缩阻力优先级设置为 1000(必需)。
- 顶部选择器具有垂直内容压缩阻力 优先级设置为 250(低)。
您可以在此 GitHub repository.
中找到我的实现
这是结果。