根据标题自动调整UIButton高度 - AutoLayout ON

时间:2014-03-17 13:06:54

标签: ios resize uibutton height autolayout

基本上标题解释了问题。使用XCode,我有这个按钮,我用不同的文本源填充它的标题(有些是长文本,有些是短文本)。我只是希望按钮使用Autolayout动态调整内容大小。

事情不起作用:

  • sizeToFit;
  • 设置> = x;
  • 的高度限制
  • 设置按钮的框架高度= titleLabel height。

似乎没有人知道互联网,我想知道它怎么可能?我认为是按钮的最常见功能之一。

有人知道帮助我的方法吗?我这个想法有问题吗?还有其他方法可以达到这个目的吗?

感谢任何愿意回答的人。真。

2 个答案:

答案 0 :(得分:1)

好的,我找到了这个解决方案:

NSAttributedString *text = [[NSAttributedString alloc] initWithString:[self titleForState:UIControlStateNormal] attributes:nil];

CGRect rect = [text boundingRectWithSize:(CGSize){287, CGFLOAT_MAX}
                                                 options:NSStringDrawingUsesLineFragmentOrigin
                                                 context:nil];


NSLayoutConstraint *buttonConstraint = [NSLayoutConstraint
                                    constraintWithItem:self
                                    attribute:NSLayoutAttributeHeight
                                    relatedBy:NSLayoutRelationEqual
                                    toItem: nil
                                    attribute:NSLayoutAttributeNotAnAttribute
                                    multiplier:1.0f
                                    constant:rect.size.height];

[self addConstraint:buttonConstraint];

哪个有效,但只有一次。我的意思是:一旦新标题填充了标题标签,它就说已经存在约束而且它不再起作用......

答案 1 :(得分:-2)

你可以这样做

CGSize stringsize = [myString sizeWithFont:[UIFont systemFontOfSize:14]]; 
//or whatever font you're using
[button setFrame:CGRectMake(10,0,stringsize.width, stringsize.height)];