设置UILabel的属性文本并使用setFontSizeToFitWidth时,属性文本字体大小会按预期调整大小。但是,当属性字符串字体大小调整为较小的字体大小时,文本在UILabel内部不会垂直对齐。
我需要使用adjustFontSizeToFitWidth方法,因为属性字符串具有可变大小。我将最小字体大小设置为" 15.0"最大值为" 28.0"。因此,我使用" 15.0 / 28.0"
的minimumScaleFactor我的代码:
NSAttributedString *balance = [[NSAttributedString alloc] initWithString:@"12390765298374652938756" attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
// Create UILabel with a 10.0 point padding around the UILabel within the parent Rect
UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.bounds.origin.x + 10, self.bounds.origin.y + 10, self.bounds.size.width - 20, self.bounds.size.height - 20)];
textLabel.attributedText = currencyWithBalance;
textLabel.font = [UIFont fontWithName:@"TitilliumWeb-Light" size:28.0];
textLabel.minimumScaleFactor = 15.0/28.0;
textLabel.textAlignment = NSTextAlignmentCenter;
textLabel.adjustsFontSizeToFitWidth = YES;
textLabel.numberOfLines = 1;
textLabel.backgroundColor = [UIColor redColor];
[self addSubview:textLabel];
任何人都可以帮助我实现这一目标,以便文本也垂直对齐吗?
谢谢你们。
答案 0 :(得分:1)
首先,使用XCodian评论中指出的sizeToFit
。这将确保标签自身调整为当前文字大小。
接下来,您需要将标签的框架垂直放置在其容器中(在您的示例中为self
)。为此,您可以使用[UIView addConstraint:]
为其添加约束。
这样的东西应该添加到代码的末尾以使其工作,可能是:
[self addConstraint:
[NSLayoutConstraint constraintWithItem:textLabel attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]
];