根据文本内部的长度,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不会垂直增长的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode 4 中正确创建调整为文本长度的 UIButton?