【问题标题】:sizeToFit UIButton when programmatically added to UIStackView以编程方式添加到 UIStackView 时的 sizeToFit UIButton
【发布时间】:2016-04-04 14:16:24
【问题描述】:

经过多次搜索,我开始放弃

我有一个 iOS 应用 (swift),它会询问用户一系列问题和答案。问题和答案是从 JSON 文件下载的。每页总是会有 1 个问题,但答案的数量会有所不同。所以答案是将 UIButtons 添加到在 xib 中创建的 UIStackView 中。这是一个小问题。

如果我创建的答案超过 1 行(即其中有换行符),它将在 UIButton.titleLabel 中创建一个新行并展开 UIButton 以适应。但是,如果答案很长并且超过 1 行,则 UIButton 不会展开。我为标签正确换行启用了换行,但是该按钮似乎没有意识到它在 UIStackView 中的宽度限制,因此假设它可以显示 1 长行文本并相应地创建它的高度 - 即使我打电话给曾经值得信赖sizeToFit()!!!

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

附:我宁愿不计算大小并手动设置按钮的高度。我希望它也可以与旋转一起使用,这当然会调整宽度

【问题讨论】:

  • preferredMaxLayoutWidth 可以解决您的问题。
  • 感谢@dasdom 并没有解决它。更有趣的是,preferredMaxLayoutWidth 实际上完全被忽略了(即使被设置为像 5 这样的常量。)在我的 StackView 上设置“基线相对”使preferredMaxLayoutWidth 被注意到,但是并没有对改变我的身高做任何事情。将继续寻找答案!
  • 对这个问题有什么新见解吗?

标签: ios swift uibutton uistackview


【解决方案1】:

好的,我从来没有找到让按钮正确调整到它自己的 UILabel 大小的修复程序,它似乎经常看到文本能够适合一行并工作。

我确实克服了这个问题,方法是用 UILabel 替换我的 UIButton。 UILabel 然后有addGestureRecognizer(UITapGestureRecognizer()),当然还有userInteractionEnabled = true

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

【讨论】:

    猜你喜欢
    • 2017-10-09
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多