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

标签 ios iphone objective-c uibutton

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

enter image description here

我认为按钮的大小小于其标题的大小。因此,标题字符串被缩写。我选择的简单而愚蠢的解决方案是在调用 [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/

相关文章:

iphone - 从 nib 文件加载 UIView?

ios - 尝试传回 userInfo 时 NSNotification 在 Swift 中中断

ios - 如何停止节点而不是让它在 1 秒后再次移动?

iphone - 如何使用 iPhone 中的核心图形制作思想泡泡

iphone - iOS6 中的 AudioToolBox 泄露?

objective-c - 模拟 CoreMotion iOS 模拟器

ios - 在 App-Store 中构建卡片高亮动画

ios - 如何在初始化 IBOutlet 时初始化变量?

iphone - 在 cellForRowAtIndexPath 中最好使用 if 语句还是 switch 语句? - UITableView

objective-c - 写入 PCM 数据时的文件 (.wav) 持续时间 @16KBps