4

NIAttributedLabelテキストにリンクを表示するため に使用しています。

            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にありますが、最後の行は正しく機能していません。すべてのテキストは青色で表示されます。

4

2 に答える 2

3

ここからダウンロードできる例をセットアップしましたが、完全に機能することがわかりました。
と:

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

シミュレーターは、テキストの右側の部分を正しく強調表示します。 ここに画像の説明を入力

あなたの文字列stringPhが の実際の部分文字列であると確信していますstrEditedTextか?

于 2012-05-29T21:30:49.137 に答える
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];
于 2012-05-31T07:23:06.240 に答える