创建一个按照文本集标题长度垂直增长的按钮时遇到问题。我见过similar problem但该解决方案在这种情况下不起作用。当我设置:
label.numberOfLines = 0
然后有可能显示多行文字,但这不会影响按钮高度本身。有没有人遇到过这个问题,并找到了很好的通用解决方案。我希望避免为按钮的内在大小等硬编码一些值。
答案 0 :(得分:2)
我自己遇到了这个并通过向按钮添加高度约束并覆盖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()
}
答案 1 :(得分:1)
我通过创建自己的按钮,添加标签和设置约束来解决问题,标签的大小决定了按钮的大小。
答案 2 :(得分:1)
我发现这与jsfiddle
类似我遇到了带有多行文字的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
的内部大小调整中存在一些错误。