为什么调用[sizeToFit]后UIButton的标题内容会缩写?

时间:2013-12-30 02:02:14

标签: ios iphone objective-c uibutton

我试图通过调用[SizeToFit]使UIButton符合其标题文本。不幸的是,我得到了不想要的结果如下。

enter image description here

我认为按钮的大小小于标题大小。因此,标题字符串是缩写。我选择的简单而愚蠢的解决方案是在调用[sizeToFit]后加上宽度为20pt。

我相信有更好的解决方案比我使用的更好 有人知道吗?

1 个答案:

答案 0 :(得分:2)

sizeToFit不会调整文本大小,但会用于调整视图大小以使其包含其子视图。请改用adjustsFontSizeToFitWidth来调整字体大小以适合您的按钮宽度。

btnMyButton.titleLabel.adjustsFontSizeToFitWidth = YES;

或者,如果您想调整按钮的大小以适应字体的宽度,您也可以采用以下方式:

NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:btnMyButton.titleLabel.font, NSFontAttributeName, nil];
CGFloat buttonWidth = [[[NSAttributedString alloc] initWithString:btnMyButton.titleLabel.text attributes:attributes] size].width;

CGRect frame = btnMyButton.frame;
btnMyButton.frame = CGRectMake(frame.origin.x, frame.origin.y, buttonWidth, frame.size.width);

编辑:

buttonWidth确实会为您提供您的标题所需的宽度,但如果它仍无效,那么请您验证:

1)您的按钮没有设置任何边距,如果有,那么您可能希望在将buttonWidth设置为btnMyButton.frame之前将其添加到buttonWidth += 10; //assuming you have 10pt margins. 变量中:

AutoLayout

2)您的按钮没有通过AutoResizingMask约束或btnMyButton.frame缩小。

3)设置{{1}}后,您的按钮未获得字体,大小或标题集。

4)你的按钮有足够的空间来调整大小。