水平堆栈视图中按钮的宽度 - 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 - 故事板的主要内容,如果未能解决你的问题,请参考以下文章