我正在尝试在UILabel中对齐UILabel或NSAttributedString,以便指定的字符始终与屏幕的中心对齐。
一种方法是使用两个标签。一个用于指定字符和左边的子字符串,并使其右对齐。第二个用于指定字符的子字符串右侧。
我想知道有没有办法简化过程(现在使用全能的NSAttributedString)。 或者可能使用NSDateFormatter。
样本用法:以时间格式设置“:”(例如“12:40”,“9:14”,“3:04 PM”)始终以屏幕为中心(或其他任何东西)。无论字体/时间/ AM-PM符号等都不同。
感谢您的帮助。
答案 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;