UIStackView 多行按钮重叠

UIStackView multiline buttons overlapping

我正在尝试将 UIButtons 动态添加到 UIStackView,但遇到了一些奇怪的行为。由于按钮内的文本也是动态的,因此它应该是多行的(默认情况下不是)。所以我这样设置中断模式:

 button.titleLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
 stackView.addArrangedSubview(button)

结果是这样的(为了更好地说明问题,我将按钮设置为不同的背景颜色):

文本超出了按钮的边界并与其他视图重叠。这怎么能解决?

UIStackView 是从这个简单的 xib 加载的:

提前致谢

titleLable 不受按钮边界的限制,这就是问题所在。您应该扩展 UIButton 并覆盖 layoutSubviews 或 intrinsicContentSize 或者只是尝试注入约束。