如何通过单个字符UILabel / NSAttributedString对齐字符串

时间:2014-05-07 08:45:06

标签: objective-c uilabel nsdateformatter nsattributedstring

我正在尝试在UILabel中对齐UILabel或NSAttributedString,以便指定的字符始终与屏幕的中心对齐。

一种方法是使用两个标签。一个用于指定字符和左边的子字符串,并使其右对齐。第二个用于指定字符的子字符串右侧。

我想知道有没有办法简化过程(现在使用全能的NSAttributedString)。 或者可能使用NSDateFormatter。

样本用法:以时间格式设置“:”(例如“12:40”,“9:14”,“3:04 PM”)始终以屏幕为中心(或其他任何东西)。无论字体/时间/ AM-PM符号等都不同。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用sizeWithAttributes:来获取文本前半部分的大小,然后调整UILabel位置。

NSString* firstHalf = [[label.text componentsSeparatedByString:@":"] objectAtIndex:0];
CGSize firstHalfSize = [firstHalf sizeWithAttributes:textAttributes];

CGRect labelFrame = label.frame;
labelFrame.origin.x = center.x-firstHalfSize.width;
label.frame = labelFrame;

这将设置":"在中心。如果要将该字符的中间位于中心,可以添加以下内容:

NSString* firstHalf = [[label.text componentsSeparatedByString:@":"] objectAtIndex:0];
CGSize firstHalfSize = [firstHalf sizeWithAttributes:textAttributes];

CGSize charSize = [@":" sizeWithAttributes:textAttributes];

CGRect labelFrame = label.frame;
labelFrame.origin.x = self.view.bounds.size.width/2-firstHalfSize.width-charSize.width/2;
label.frame = labelFrame;