xcode - 为什么我不能 H 居中并为 StackView 中的元素提供固定宽度
问题描述
我的问题一直是如何在堆栈视图中居中一个元素
请看我下面的截图来解释:
数字 1) 是主 StackView
数字 2) 是我想让它的内容 ( UIView in No 3 ) 以它为中心的相关 StackView
3号)这个UIView我想把它放在2号里面,并给它一个更小的宽度,与图片中的蓝线相匹配
注意:问题是当我在 No.3 中给 UIView 一个固定宽度时,它总是会影响主 StackView 后面的滚动视图并缩小它!
下面是No.1中主StackView的配置
下面是2号子StackView的配置
正如我所说,当我在 No.3 中为 UIView 提供固定宽度时,它总是会缩小并损坏 App 背景中的 scrollView
那么你能帮助如何处理这个问题吗?
解决方案
我假设您实际上并不想要绿色- 这只是为了使视图可见。
您可能想要做的是将水平堆栈视图(包含两个按钮)嵌入绿色视图中,而不是相反(就像您现在拥有的那样)。
试试这样:
MainStack 设置:
BtnsStack 设置(我猜你想在按钮之间留一些空间 - 我用过8
):
这是它在运行时的样子,绿色BtnsStackHolderView
背景设置为清除:
并且,旋转以显示按钮保持水平居中:
编辑 如何在 stackView 中居中绿色视图而不将其嵌入另一个视图中?
您的绿色视图未在堆栈视图中居中的原因是您将堆栈视图Alignment
设置为Fill
,这会将排列的子视图拉伸以填充堆栈视图的宽度。
对于带有Vertical
轴的堆栈视图,对齐选项有:
- 充满
- 领导
- 中心
- 尾随
这是一个示例Center
(堆栈视图本身从边缘被限制在顶部/前导/尾随 40 分):
从底层开始...
蓝色wEqToStack h60
视图受到限制:
- 高度 = 60
- 宽度等于堆栈视图的宽度
黄色w200 h60
视图受到限制:
- 宽度 = 200
- 高度 = 60
橙色wNone h60
视图受到限制:
- 宽度 =没有设置宽度约束
- 高度 = 60
并且绿色BtnsStackHolderView
没有宽度或高度限制......它的大小取决于对其内容的限制(BtnsStack
每边有 20 分)。
如果我们运行它,我们会看到(红色虚线只是为了显示堆栈视图的框架):
哎呀!橙景哪里去了?由于我们没有给它一个宽度约束,并且堆栈视图的Alignment
设置为Center
,它最终的宽度为零。
因此,如果您的堆栈视图中的大多数视图都定义了自己的宽度,则使用 center 会减少所需的“包含”视图的数量。但是,如果大多数视图都需要拉伸堆栈视图的宽度,那么将想要居中的内容嵌入到“包含”视图中可能会更容易。
推荐阅读
- python - Pandas 将每列与前 4 行聚合在一起
- reactjs - 检查字段是否有效 Formik React JS
- angular - 为什么内容投影不适用于根组件?
- hololens - MRTK - 在运行时更改空间意识材料
- filesystems - Databricks 文件系统 - %sh ls 与 %fs ls
- java - 如何防止JPA查询相关实体
- c - strncat 导致缓冲区溢出
- reactjs - 如何在firestore中同时完全删除集合文档和子集合文档
- flutter - #_currentArena 是什么?(句法)
- http - 通过 HTTP 集成从 AWS Api Gateway 中的 websocket 提取 websocket 连接 ID 和其他详细信息