1

"Hello"文字列があり、前と最後に追加する必要があるとしましょう","。文字列は次のよう",Hello,"になります。今度は、テキストを白にし、「,」を別の色にしたいとします。だから私はこのようなことをします:

[attributedString addAttribute:(__bridge NSString *)kCTForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(range.location+1, range.length-1)];
[attributedString addAttribute:(__bridge NSString *)kCTForegroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(range.location, 1)];
[attributedString addAttribute:(__bridge NSString *)kCTForegroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(range.length-1, 1)];

後で私はCTFrameSetterRedCGContextRef

CTLineRef line = CFArrayGetValueAtIndex((CFArrayRef)lines, index);
CFArrayRef glyphRuns = CTLineGetGlyphRuns(line);
CFIndex glyphCount = CFArrayGetCount(glyphRuns);

そして、この",Hello,"例では、glyphCount が返されます3。コードを次のように変更すると:

[attributedString addAttribute:(__bridge NSString *)kCTForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(range.location+1, range.length-1)];
[attributedString addAttribute:(__bridge NSString *)kCTForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(range.location, 1)];
[attributedString addAttribute:(__bridge NSString *)kCTForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(range.length-1, 1)];

(メッセージ「,Hello,」全体が白くなり、それが唯一の変更点です) glyphCount が返される1 理由と回避方法は? これはかなり奇妙に見えます。

4

0 に答える 0