2015-04-06 22 views
0

我正在嘗試創建一個UILabel,其中一些文本對齊到右側,一些文本對齊到左側。它類似於UITableViewCell與小箭頭:如何在UILabel中進行2個對齊

enter image description here

我試圖用NSAttributedString做到這一點,但無法弄清楚什麼是解決這個正確的方法。

下面是一些代碼不起作用。它與右邊一致。

NSMutableAttributedString *att = [[NSMutableAttributedString alloc] initWithString:@"Label >"]; 

     NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init]; 
     paragraph.alignment = NSTextAlignmentLeft; 

     [att addAttribute:NSParagraphStyleAttributeName value:paragraph range:NSMakeRange(0, @"Label".length)]; 

     NSMutableParagraphStyle *rightParagraph = [[NSMutableParagraphStyle alloc] init]; 
     paragraph.alignment = NSTextAlignmentRight; 
     [att addAttribute:NSParagraphStyleAttributeName value:rightParagraph range:NSMakeRange(5, 1)]; 
+4

爲什麼不使用2個標籤? – Wain 2015-04-06 12:38:22

+1

同意。如果可以,請使用兩個標籤。 – 2015-04-06 12:41:02

+0

由於標籤的大小不同。這種情況下文本是恆定的,但我需要計算標籤的大小,以便它們不重疊。 – 2015-04-06 12:46:03

回答

0

您可以使用NSAttributedString達到你的要求,但它會是更好的和更清潔的方式使用兩個UILabels來代替。

+0

我不同意。取決於案件。我有複雜的字符串分析來執行。這只是一個簡單的例子。問題不在於表現。問題是如何實現具有2個對齊的屬性字符串 – 2015-04-06 12:54:03

0

我之前用這段代碼做過,希望它也適合你。

NSString* alphaString = @「some text」; 

NSMutableParagraphStyle* paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle.alignment = NSTextAlignmentLeft; 

NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] 
               initWithString:alphaString 
               attributes:[NSDictionary dictionaryWithObjectsAndKeys: 
               [UIFont fontWithName:@"HelveticaNeue" size:13],  NSFontAttributeName, 
    paragraphStyle, NSParagraphStyleAttributeName, nil]]; 

NSString * betaString = @「some other text」; 

NSMutableParagraphStyle* paragraphStyle2 = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle2.alignment = NSTextAlignmentRight; 


[attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:betaString attributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue" size:13], NSFontAttributeName, paragraphStyle2, NSParagraphStyleAttributeName, nil]]]; 

yourLabel.attributedText = attributedString; 
0

使用2個標籤。將所需的TextAlignment屬性分配給它們。並設置標籤的文本值之後,在此線:

[textLabel sizeToFit];

雖然標籤的尺寸變化將設置爲最小尺寸。並會避免文本重疊。