5

文の最初の単語を文の残りの色とは異なる色にする方法を探しています。METHOD_001は、最初に文字列全体を白く塗りつぶし、次に最初の 8 文字を赤く塗り直します。METHOD_002は、文字列の長さを使用して残りの文字を計算し、それらを白で表示する前に、最初の 8 文字を赤で表示します。

METHOD_001は間違いなく最高ですが、もっと簡単な方法があるかどうか興味がありますNSMutableAttributedString addAttribute:。範囲をとらず、文字列全体に属性を適用するだけの を期待していました。範囲を指定するNSMutableAttributedString必要がありますが、何か不足していますか?

注意: コードには、読みやすくするためにハードコードされた値が含まれています。

// METHOD_001
NSMutableAttributedString *attrString_001 = [[NSMutableAttributedString alloc] initWithString:@"Distance 1720 mm" attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
[attrString_001 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[[self nameLabel] setAttributedText:attrString_001];

// METHOD_002
NSString *string = @"Distance 1720 mm";
NSUInteger stringLength = [string length];
NSMutableAttributedString *attrString_002 = [[NSMutableAttributedString alloc] initWithString:string];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(9, (stringLength-9))];
[[self distanceLabel] setAttributedText:attrString_002];
4

1 に答える 1