2012-05-24 52 views
4

我正在使用NIAttributedLabel來顯示文本鏈接。NIAttributedLabel settextcolor不起作用

  NIAttributedLabel *label; 
      label = [[NIAttributedLabel alloc] initWithFrame:rect]; 

      label.delegate = self; 
      label.font = [UIFont fontWithName:@"Helvetica" size:MAIN_FONT_SIZE]; 
      label.textAlignment = UITextAlignmentLeft; 
      label.lineBreakMode = UILineBreakModeWordWrap; 
      label.numberOfLines = 0; 
      label.backgroundColor = [UIColor clearColor]; 
      label.highlightedTextColor = [UIColor whiteColor]; 
      label.text = strEditedText; 
      label.textColor = [UIColor blackColor]; 

      [label setTextColor:[UIColor blueColor] 
          range:[strEditedText rangeOfString:stringPh]]; 

但最後一行工作不正常,雖然stringPhstrEditedText。所有文字都以藍色顯示。

+0

什麼是stringPH和strEditedText的價值? –

+0

** strEditedText **是:請聯繫abc 800.493.0016,選項#3獲得進一步幫助。並且** stringPh **是800.493.0016 – Nitish

+0

您可以在最後一行之前請求'NSLog'每個字符串嗎?唯一可能導致這種情況的是(所有文本都是藍色的)是兩個字符串相同時(因此是從開始到結束的範圍)。我用你提供的值使用靜態字符串複製粘貼你的代碼,它工作正常。 – Alladinian

回答

3

我建立了一個例子,你可以下載here,我發現它的工作很完美。
有了:

NSString * strEditedText= @"I'm text"; 
NSString *stringPh = @"I'm"; 

模擬器正確地強調文本的右側部分: enter image description here

你真的確認你的字符串stringPhstrEditedText實際子?

2

這裏是工作的代碼我

NSString * strEditedText= @"Please contact abc at 800.493.0016, option #3 for further assistance."; 
NSString *stringPh = @"800.493.0016"; 
NIAttributedLabel *label; 
label = [[NIAttributedLabel alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; 

label.delegate = self; 
label.font = [UIFont fontWithName:@"Helvetica" size:MAIN_FONT_SIZE]; 
label.textAlignment = UITextAlignmentLeft; 
label.lineBreakMode = UILineBreakModeWordWrap; 
label.numberOfLines = 0; 
label.backgroundColor = [UIColor clearColor]; 
label.highlightedTextColor = [UIColor whiteColor]; 
label.text = strEditedText; 
label.textColor = [UIColor blackColor]; 

[label setTextColor:[UIColor blueColor] 
       range:[strEditedText rangeOfString:stringPh]]; 
[self.view addSubview:label];