根据文本内部的长度,UIButton不会垂直增长

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据文本内部的长度,UIButton不会垂直增长相关的知识,希望对你有一定的参考价值。

我有一个创建按钮的问题,该按钮将根据文本集的标题长度垂直增长。我见过similar problem,但在这种情况下该解决方案不起作用。当我设置:

 label.numberOfLines = 0

然后有可能显示多行文字,但这不会影响按钮高度本身。有没有人遇到过这个问题,并找到了很好的通用解决方案。我很想避免为按钮的内在大小等硬编码一些值。

答案

我自己遇到了这个并通过向按钮添加高度约束并覆盖updateViewConstraints来解决它。有点hacky。

- (void)updateViewConstraints
{
    self.myButtonHeightConstraint.constant = self.myButton.titleLabel.frame.size.height;
    [super updateViewConstraints];
}

我还向Apple提交了一个关于UIButton没有调整大小以适应它的UIButtonLabel的错误。


2017版代码:

override func updateConstraints() {

    let h = titleLabel!.frame.size.height
    self.heightAnchor.constraint(equalToConstant: h).isActive = true
    super.updateConstraints()
}
另一答案

我通过创建自己的按钮,添加标签和设置约束来解决问题,标签的大小决定了按钮的大小。

另一答案

我看到这是UIButton that resizes to fit its titleLabel的类似问题

我有UIButton与多行文字相同的问题,它也有一个图像。我使用sizeThatFits:来计算尺寸,但计算出错误的高度。

我没有把它变成UIButtonTypeCustom,而不是我在按钮的sizeThatFits:上调用了titleLabel,其宽度更小(由于按钮中的图像):

CGSize buttonSize = [button sizeThatFits:CGSizeMake(maxWidth, maxHeight)];
CGSize labelSize = [button.titleLabel sizeThatFits:CGSizeMake(maxWidth - offset, maxHeight)]; // offset for image
buttonSize.height = labelSize.height;
buttonFrame.size = buttonSize;

然后我使用那个大小的高度来正确设置按钮的框架,它工作了:)

也许他们在UIButton的内部尺寸上有一些错误。

以上是关于根据文本内部的长度,UIButton不会垂直增长的主要内容,如果未能解决你的问题,请参考以下文章

水平 UIButton 中的垂直文本

使用 AutoLayout 根据子视图中的动态文本增长视图

根据文本调整 UIButton 大小的最简单方法

如何在 Xcode 4 中正确创建调整为文本长度的 UIButton?

使用 minimumScaleFactor 时 UIButton titleLabel 未垂直居中

c_cpp UIButton类别用于垂直居中标题标签和图像。文本标签位于图像下方。