首页 > 解决方案 > 水平 UIStackView - 如何对齐里面的项目,使一个向左浮动,另一个在中心?

问题描述

我正在制作一个“首选项”屏幕,并在顶部标题的布局方面苦苦挣扎。我有一个简单的“后退”按钮和一个标签。要求是,后退按钮必须始终向左浮动,并且标签必须居中,其自身的内容居中。

到目前为止,我创建了一个包含这两个项目的堆栈视图(水平)。我已将分布指定为等间距,并添加了如下宽度约束:按钮 - 60 标签 - 200

这在一个屏幕上看起来不错,但我确信它不会起作用,因为屏幕宽度在不同的设备上以及纵向/横向之间也有所不同。

在 CSS 中,这只是将按钮指定为 float:left,标签为 margin:auto,如何在 XIB 中进行这项工作?

这是一个截图供参考:

在此处输入图像描述

标签: iosxibuistackview

解决方案


你有几个选择...


最简单,最接近您的 CSS 描述:

在此处输入图像描述

按钮从顶部被限制为 0,从前导被限制为 8(根据需要调整);标签被限制为垂直居中按钮,水平居中以查看。

缺点:如果标签获得太多文本,它将与按钮重叠。


第二种选择:

在此处输入图像描述

UIView与上面相同,但在右上角添加一个“间隔” ......将其限制为 0 到顶部,8 到尾随,垂直居中到按钮,并将其限制为与按钮相等的宽度和相等的高度。然后,将>= 8约束添加到导致按钮尾随的标签,并将标签尾随添加到间隔视图前导。这将允许标签根据其文本水平扩展,但会防止重叠(...如果太多无法容纳,文本将被截断)。


第三个选项 - 使用堆栈视图:

在此处输入图像描述

堆栈视图设置:

Axis: Horizontal
Alignment: Fill
Distribution: Fill
Spacing: 8

将堆栈视图 0 约束到顶部,8 个前导和尾随(仅用于两侧的小填充),添加一个按钮、标签和UIView. 将“spacer”视图约束为按钮的宽度。设置Content Hugging Priority = 1000按钮的水平(将保持其标题的宽度)。

还有其他方法,部分取决于您是否要执行此处未显示的其他任何操作,但是所有这三种方法都可以完成工作。


推荐阅读