Ios 以编程方式添加到UIStackView时的sizeToFit UIButton

Ios 以编程方式添加到UIStackView时的sizeToFit UIButton,ios,swift,uibutton,uistackview,Ios,Swift,Uibutton,Uistackview,经过多次寻找,我已经开始放弃了 我有一个iOS应用程序(swift),可以向用户询问一系列问题和答案。问题和答案从JSON文件下载。每页总是有一个问题,但答案的数量不同。因此,答案被添加到在xib中创建的UIStack视图中。这是一个小问题 如果我创建了一个多行的答案(即其中有换行符),它将在UIButton.titleLabel中创建一个新行,并展开UIButton以适应。但是,如果答案很长且跨越超过1行,则UIButton不会展开。我已经为标签包装正确启用了换行功能,但是按钮似乎没有意识到它

经过多次寻找,我已经开始放弃了

我有一个iOS应用程序(swift),可以向用户询问一系列问题和答案。问题和答案从JSON文件下载。每页总是有一个问题,但答案的数量不同。因此,答案被添加到在xib中创建的UIStack视图中。这是一个小问题

如果我创建了一个多行的答案(即其中有换行符),它将在UIButton.titleLabel中创建一个新行,并展开UIButton以适应。但是,如果答案很长且跨越超过1行,则UIButton不会展开。我已经为标签包装正确启用了换行功能,但是按钮似乎没有意识到它在UIStackView中的宽度约束,因此假设它可以显示一行长的文本,并相应地创建它的高度-即使我调用永远可靠的sizeToFit()

我假设缺少一个简单的设置,比如“contentWidth”


另外,我不希望计算尺寸,而是手动设置按钮的高度。我希望它也能与旋转一起工作,旋转当然会调整宽度的大小。好吧,我从来没有找到一个修复方法,可以使按钮正确地调整到它自己的UILabel大小,它似乎总是看到文本能够适应一行并工作

我确实克服了这个问题,用UILabel替换了我的UIButton。然后,UILabel具有
AddGestureRecognitizer(uiTapGestureRecognitizer())
,当然还有
userInteractionEnabled=true


这不是我想要的方式,但会让我的客户满意,直到下一次更新到UIStackView

preferredMaxLayoutWidth
可以解决您的问题。谢谢@dasdom没有解决问题。更有趣的是,
preferredMaxLayoutWidth
实际上被完全忽略了(即使设置为常数,如5)。在我的StackView上设置“基线相对”使
preferredMaxLayoutWidth
被注意到,但对改变我的高度没有任何作用。将继续搜索答案!对这个问题有什么新的见解吗?