2014-05-07 92 views
0

我想對齊UILabel中的UILabel或NSAttributedString,以便指定的字符始終與屏幕中心對齊。如何通過單個字符對齊字符串UILabel/NSAttributedString

一種方法是使用兩個標籤。一個用於指定的字符和左側的子字符串,並使其右對齊。第二個用於指定字符的子字符串。

我想知道是否有一種方法來簡化過程(現在與全能的NSAttributedString)。 或者也許用NSDateFormatter。

示例用法:以時間格式(例如「12:40」,「9:14」,「3:04 PM」)設置「:」始終居中屏幕(或任何其他任何東西其他)。無論字體/次數/ AM-PM符號如何。

感謝您的幫助。

回答

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; 
+0

你也可以修改固有大小和文本對齊方式(左或右)在標籤內正確居中的文本。也許可以使用'NSParagraphStyle'中的'headIntent'和'tailIndent'。也可以使用':'作爲製表符列結束符,並在段落樣式中用'NSTextTab'做魔術。 – Sulthan