垂直对齐UILabel中的属性文本

时间:2014-04-11 11:24:20

标签: ios objective-c uilabel vertical-alignment nsattributedstring

设置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];

任何人都可以帮助我实现这一目标,以便文本也垂直对齐吗?

谢谢你们。

1 个答案:

答案 0 :(得分:1)

首先,使用XCodian评论中指出的sizeToFit。这将确保标签自身调整为当前文字大小。

接下来,您需要将标签的框架垂直放置在其容器中(在您的示例中为self)。为此,您可以使用[UIView addConstraint:]为其添加约束。

这样的东西应该添加到代码的末尾以使其工作,可能是:

[self addConstraint:
  [NSLayoutConstraint constraintWithItem:textLabel attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterY multiplier:1 constant:0]
];