2012年5月4日 星期五

iOS學習_UILabel顯示兩種以上的顏色

最近遇到一個需求:希望在顯示機組是否運轉時,利用顏色來進行區別,可能是紅色是停止、綠色是正常、黃色是警告之類的,就像是

這樣的需求對於Web來說非常的簡單,只需要利用HTML語法就可以解決,但是在iOS當中,UILabel預設只能顯示一種顏色,不能透過類似CSS的方式在一個UILabel中顯示不同的顏色。

若要做出這樣的效果,網路上大致可以分成三種解決方案:
1. 要幾種顏色就用幾個UILabel組起來。
2. 利用WebView來顯示,也就是用HTML來作。
3. 繼承UILabel,寫出一個有這個功能的Label。

而這種廣泛的需求,當然已經有人寫好了,最後我採用的是:TTTAttributedLabel?𠽤幾ㄍㄨ。

使用步驟:
1. 下載程式碼

2. 將TTTAttributedLabel.h 與 TTTAttributedLabel.m加到你的專案中。

3. 在你需要兩種以上顏色的UILabel換成TTTAttributedLabel

4. 使用他(假設我的TTTAttributedLabel叫做textinfo)
NSMutableAttributedString *tttString = [[NSMutableAttributedString alloc] initWithString:@"●●●●"];
[tttString addAttribute:(NSString*)kCTForegroundColorAttributeName value:(id)[[UIColor greenColor] CGColor] range:NSMakeRange(0,2)];
[tttString addAttribute:(NSString*)kCTForegroundColorAttributeName value:(id)[[UIColor redColor] CGColor] range:NSMakeRange(2,2)];
[textinfo setText:tttString];


上述程式碼就可產生●●●●這個效果。

註:NSMakeRange(0,2)意思是第0個開始,後面兩個。

效果圖:

2 則留言:

余斌 提到...

中文行间距有问题啊

ola的家 提到...

不太懂"中文行間距"的意思

張貼留言