2

Googleオートコンプリートは、検索対象を太字にします

例:地獄を検索すると、「地獄o」が表示されます

属性付きの文字列が必要だと思うので、私のコードは次のとおりです。

- (NSMutableAttributedString*) highlightSearchString:(NSString*)substringToHighlight{

    NSMutableAttributedString * mutableAttributedString = [[ NSMutableAttributedString alloc]initWithString:self];
    NSUInteger count = 0, length = [mutableAttributedString length];
    NSRange range = NSMakeRange(0, length);

    count = 0,
    length = [mutableAttributedString length];
    range = NSMakeRange(0, length);
    while(range.location != NSNotFound)
    {
        range = [[mutableAttributedString string] rangeOfString:substringToHighlight options:0 range:range];
        if(range.location != NSNotFound) {

            //[mutableAttributedString setTextColor:[UIColor blueColor] range:NSMakeRange(range.location, [word length])];
            NSString *boldFontName = [[UIFont boldSystemFontOfSize:12] fontName];
            NSDictionary * dict = @{NSFontAttributeName:boldFontName};
            NSRange  rangeHighlight = NSMakeRange(range.location, substringToHighlight.length);
            [mutableAttributedString setAttributes:dict range:rangeHighlight];
            range = NSMakeRange(range.location + range.length, length - (range.location + range.length));
            count++;
        }
    }
    return mutableAttributedString;
}

NSFontAttributeNameただし、でしか利用できないため、機能しませんiOS6

その後、tableViewCellを更新する必要があります

cell.textLabel.text=text;

投稿されたテキストを利用する何かで。

4

1 に答える 1

3

フォントに CoreText 定義を使用するだけです。

UIFont *font = [UIFont boldSystemFontOfSize:12]; 
CTFontRef ctFontRef = CTFontCreateWithName((__bridge CFStringRef)font.fontName, font.pointSize, NULL);
NSDictionary * dict = @{(NSString *)kCTFontAttributeName : (__bridge id) ctFontRef};

秒の問題の場合:

UILabeliOS SDKのデフォルトは、 NSAttributedStringiOS 6 からのみサポートします。したがって、iOS 5 では、NSAttributedStringCoreText を使用して自分自身を描画するか、次のNSAttributedStringようにサポートするサード パート ラベルを取得する必要がありますTTTAttributedLabel

于 2013-01-30T10:45:44.223 に答える