我尝试通过调用 [SizeToFit]
使 UIButton 适合其标题文本。不幸的是,我得到了如下不需要的结果。
我认为按钮的大小小于其标题的大小。因此,标题字符串被缩写。我选择的简单而愚蠢的解决方案是在调用 [sizeToFit]
后在其宽度上加上 20pt。
我相信有比我使用的更好的解决方案。
有谁知道吗?
最佳答案
sizeToFit
不会调整文本大小,但它用于调整 View 大小,以便包含其 subview 。请使用 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) 您的按钮没有设置任何边距,如果有,那么您可能需要在设置 btnMyButton.frame
之前将它们添加到 buttonWidth
变量中:
buttonWidth += 10; //assuming you have 10pt margins.
2) 您的按钮不会通过 AutoLayout
约束或 AutoResizingMask
缩小。
3) 设置 btnMyButton.frame
后,您的按钮未设置字体、大小或标题。
4) 您的按钮有足够的空间来调整大小。
关于ios - 为什么调用[sizeToFit]后UIButton的标题内容会被缩写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20832337/