2013-05-15 94 views
2

我使用TTTAttributedLabel來檢測在iOS 6項目中對樣式爲UILabel(使用NSAttributedString)的鏈接的點擊。我希望能夠在我的標籤中爲鏈接交替使用顏色;手動設置不同鏈接範圍的不同顏色,我很好,只要庫處理鏈接檢測與用戶接觸我。看起來TTTAttributedLabel類最後應用了鏈接樣式,因此特定範圍的文本樣式會被爲類實例設置的單個鏈接樣式覆蓋。在同一個NSAttributedString中使用多種不同顏色的着色鏈接

即將進入並嘗試修改TTTAttributedLabel代碼(要麼不應用鏈接樣式,要麼應用我自己的樣式範圍)之後,我想我會問這裏是否有人有更好的想法來考慮實現這個。可能不同的庫支持同一標籤中的各種顏色的鏈接範圍,開箱即用?

回答

5

這已經是支持的,只需使用:

- (void)addLinkWithTextCheckingResult:(NSTextCheckingResult *)result 
          attributes:(NSDictionary *)attributes; 

這可以讓你在每個鏈接的基礎上指定自己的屬性。例如,與linkAttributes字典中的鏈接的一次性着色:

if (linkAttributes) { 
    [self addLinkWithTextCheckingResult:[NSTextCheckingResult linkCheckingResultWithRange:linkRange URL:[NSURL URLWithString:linkText]] attributes:linkAttributes]; 
} 
else { 
    [self addLinkToURL:[NSURL URLWithString:linkText] withRange:linkRange]; 
} 

的鏈路屬性詞典使用在NSAttributedString.h定義鍵。例如:

linkAttributes = @{ 
    NSForegroundColorAttributeName: [UIColor greenColor], 
    NSUnderlineStyleAttributeName: @(NSUnderlineStyleNone) 
}; 
+0

「linkAttributes」字典中有什麼?那裏的文件在哪裏? –

+0

查看'NSAttributedString.h'。我將在上面添加一個示例。 – mjh

相關問題