水平堆栈视图中按钮的宽度 - iOS - 故事板

Posted

技术标签:

【中文标题】水平堆栈视图中按钮的宽度 - iOS - 故事板【英文标题】:Width of button in horizontal stackview - iOS - Storyboard 【发布时间】:2019-01-30 23:31:22 【问题描述】:

我在垂直堆栈视图中有两个控件,下面是我的问题

我希望我的控件像这样显示

而是这样显示

如何设置按钮标题以使按钮的宽度不会增加

按钮标题也是动态的,所以我无法将其设置为常量值

请指教

【问题讨论】:

这看起来不太适合使用堆栈视图。 如果我有两个像我提到的控件,你是对的..但是我有大约 5 行,我希望每个交替行看起来像图片..按钮、标签、标签、按钮、文本字段..这是我的实际层次结构,所以我从垂直堆栈视图开始 我仍然不相信需要堆栈视图。堆栈视图用于设置视图之间的间距,例如如果您想确保所有视图之间的间距相等以覆盖屏幕的高度。但是,如果您所拥有的只是一个视图在另一个之上的另一个之上,那么触摸,您就不需要堆栈视图。只需对齐它们的中心并设置它们之间的约束,你自己。 【参考方案1】:

有几种方法可以做到这一点。虽然UIStackView 不是需要,但它可以节省一些设置约束的步骤。

所以,这是一种方法:

我已将堆栈视图 20-pts 限制为顶部、前导和尾随(安全区域),但没有底部或高度限制。 堆栈视图设置为Alignment: Center Distribution: Fill Spacing: 2 按钮的内容插入为40 用于左侧和右侧,4 用于顶部和底部。这将允许他们根据动态标题水平拉伸/收缩。 我为标签设置了 28.5 的高度约束(因此,只有一点垂直填充),为它们提供了堆栈视图的 Equal-Width 约束。李> 文本字段还有一个Equal-Width 对堆栈视图的约束。

因此,按钮保持居中并根据标题调整其宽度,并且标签和文本字段会拉伸以适应堆栈视图的宽度。

【讨论】:

【参考方案2】:

我建议使用set content hugging priority 方法。如果您以编程方式查看视图,它应该看起来像这样:

myButton.setContentHuggingPriority(.required, for: .horizontal)

【讨论】:

但我的标签也变小了 首先你为什么没有在问题中提到它?如果您的标签自行缩小,导致内容似乎无法完全显示,请尝试设置它的压缩阻力,例如:myLabel.setContentCompressionResistancePriority(.required, for: .vertical 对不起..我以为你可以从我添加的图片中理解 也许尝试将标签的 numberOfLines 设置为 0

以上是关于水平堆栈视图中按钮的宽度 - iOS - 故事板的主要内容,如果未能解决你的问题,请参考以下文章

iOS:无法更改水平堆栈视图中的宽度

iOS - 在堆栈视图中拉伸的图像

iOS中的堆栈视图问题

如何在 UIStackView 中保留隐藏视图的约束

在水平堆栈视图(自动布局)中将文本与图像垂直居中 - iOS

水平堆栈视图内的标签宽度相等?