为什么我不能 H-Centering 并为 StackView 中的元素提供固定宽度
Why I can't H-Centering and give fixed width to element inside StackView
我的问题一直是如何在堆栈视图中将一个元素居中
请看我下面的截图说明:
编号 1) 是主要的 StackView
数字 2) 是相关的 StackView,我想让它的内容(3 号中的 UIView)居中
Number 3) 这个UIView我想把它放在No.2里面居中,并给它一个较小的宽度来匹配图中的蓝线
注意:问题是当我在 3 号中给 UIView 一个固定宽度时,它总是影响主 StackView 后面的滚动视图并缩小它!!
下面是1号主StackView的配置
下面是2号子StackView的配置
正如我所说,当我在No.3中给UIView设置固定宽度时,它总是缩小并损坏App后台的scrollView
请问您能帮忙解决这个问题吗?
我假设您实际上并不想要 绿色 颜色 - 这只是为了让视图可见。
您可能想要做的是在绿色视图中嵌入水平堆栈视图(包含两个按钮),而不是相反(就像您现在拥有的那样)。
像这样尝试:
MainStack 设置:
BtnsStack 设置(我猜你想在按钮之间设置一些 space - 我使用了 8
):
这是 运行 时间的样子,绿色 BtnsStackHolderView
背景设置为清晰:
并且旋转以显示按钮保持水平居中:
编辑 如何在不将绿色视图嵌入另一个视图的情况下将其居中放置在 stackView 中?
您的绿色视图未在堆栈视图中居中的原因是您将堆栈视图的 Alignment
设置为 Fill
,这会拉伸排列的子视图以填充堆栈视图的宽度.
对于具有 Vertical
轴的堆栈视图,对齐选项为:
- 填充
- 领先
- 居中
- 尾随
这里是一个 Center
的例子(堆栈视图本身被限制在距离边缘 40 点的顶部/前导/尾随):
从底部开始...
蓝色 wEqToStack h60
视图受限:
- 身高=60
- 宽度等于堆栈视图的宽度
黄色 w200 h60
视图受限:
- 宽度=200
- 身高=60
橙色 wNone h60
视图受限:
- width = 未设置宽度约束
- 身高=60
绿色 BtnsStackHolderView
没有宽度或高度限制...它的大小由对其内容的限制决定(BtnsStack
每边 20 磅)。
如果我们运行这个,我们看到(红色虚线只是为了显示堆栈视图的框架):
糟糕!橙色视图去哪儿了?由于我们没有给它一个宽度约束,并且堆栈视图的 Alignment
设置为 Center
,它最终的宽度为零。
因此,如果堆栈视图中的大多数视图都定义了自己的宽度,则使用居中可减少所需的“包含”视图的数量。但是,如果大多数视图需要拉伸堆栈视图的宽度,那么将您想要居中的内容嵌入到“包含”视图中可能会更容易。
我的问题一直是如何在堆栈视图中将一个元素居中
请看我下面的截图说明:
编号 1) 是主要的 StackView
数字 2) 是相关的 StackView,我想让它的内容(3 号中的 UIView)居中
Number 3) 这个UIView我想把它放在No.2里面居中,并给它一个较小的宽度来匹配图中的蓝线
注意:问题是当我在 3 号中给 UIView 一个固定宽度时,它总是影响主 StackView 后面的滚动视图并缩小它!!
下面是1号主StackView的配置
下面是2号子StackView的配置
正如我所说,当我在No.3中给UIView设置固定宽度时,它总是缩小并损坏App后台的scrollView
请问您能帮忙解决这个问题吗?
我假设您实际上并不想要 绿色 颜色 - 这只是为了让视图可见。
您可能想要做的是在绿色视图中嵌入水平堆栈视图(包含两个按钮),而不是相反(就像您现在拥有的那样)。
像这样尝试:
MainStack 设置:
BtnsStack 设置(我猜你想在按钮之间设置一些 space - 我使用了 8
):
这是 运行 时间的样子,绿色 BtnsStackHolderView
背景设置为清晰:
并且旋转以显示按钮保持水平居中:
编辑 如何在不将绿色视图嵌入另一个视图的情况下将其居中放置在 stackView 中?
您的绿色视图未在堆栈视图中居中的原因是您将堆栈视图的 Alignment
设置为 Fill
,这会拉伸排列的子视图以填充堆栈视图的宽度.
对于具有 Vertical
轴的堆栈视图,对齐选项为:
- 填充
- 领先
- 居中
- 尾随
这里是一个 Center
的例子(堆栈视图本身被限制在距离边缘 40 点的顶部/前导/尾随):
从底部开始...
蓝色 wEqToStack h60
视图受限:
- 身高=60
- 宽度等于堆栈视图的宽度
黄色 w200 h60
视图受限:
- 宽度=200
- 身高=60
橙色 wNone h60
视图受限:
- width = 未设置宽度约束
- 身高=60
绿色 BtnsStackHolderView
没有宽度或高度限制...它的大小由对其内容的限制决定(BtnsStack
每边 20 磅)。
如果我们运行这个,我们看到(红色虚线只是为了显示堆栈视图的框架):
糟糕!橙色视图去哪儿了?由于我们没有给它一个宽度约束,并且堆栈视图的 Alignment
设置为 Center
,它最终的宽度为零。
因此,如果堆栈视图中的大多数视图都定义了自己的宽度,则使用居中可减少所需的“包含”视图的数量。但是,如果大多数视图需要拉伸堆栈视图的宽度,那么将您想要居中的内容嵌入到“包含”视图中可能会更容易。