【发布时间】:2015-08-23 20:24:18
【问题描述】:
我一直在使用以下代码计算标签字体大小 after the adjustsFontSizeToFitWidth has been performed 在使用 AutoLayout 约束的标签上,并且效果很好:
NSStringDrawingContext *labelContext = [NSStringDrawingContext new];
labelContext.minimumScaleFactor = label.minimumScaleFactor;
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:label.text attributes:@{NSFontAttributeName : label.font}];
[attributedString boundingRectWithSize:label.frame.size options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:labelContext];
_fontSize = label.font.pointSize * labelContext.actualScaleFactor;
在我的故事板中,我将线条设置为 1 和最小字体比例,如下所示:
但是我尝试在 UIButton 上使用完全相同的方法,唯一的区别是我访问 UIButton 的 titleLabel 属性,如下所示:
NSStringDrawingContext *labelContext = [NSStringDrawingContext new];
labelContext.minimumScaleFactor = _Button.titleLabel.minimumScaleFactor;
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:_Button.titleLabel.text attributes:@{NSFontAttributeName : _Button.titleLabel.font}];
[attributedString boundingRectWithSize:_Button.frame.size options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:labelContext];
_fontSize = _Button.titleLabel.font.pointSize * labelContext.actualScaleFactor;
虽然我的按钮的 label.font 正在根据宽度调整字体大小,但字体大小的计算不会返回比 Storyboard 中设置的字体大小更小的字体大小。
这可能是因为我没有像我对 UILabel 所做的那样,为故事板中的 Button.label 明确设置最小比例因子。我尝试在 viewDidLoad 方法中的 button.titleLabel 上设置 minimumScaleFactor,但这会导致 fontSize 结果被该数字精确缩放,并且似乎没有考虑边界按钮框的宽度.
【问题讨论】:
标签: ios uibutton autolayout uilabel