我知道在CFAttributedString中没有响应任何方法,比如NSString的stringByReplacingOccurrencesOfString:withString:
方法,我找不到一个可以使用CF(Mutable)AttributedString来做到这一点的方法。
我想用相同的文本替换字符串中的一些文本,但是另一种颜色,例如。 g。,我有字符串@"This is a text"
,我想更改单词“text”的颜色。
我希望这个问题很清楚,如果不是,请问我。
感谢。
答案 0 :(得分:2)
我会在NSMutableAttributedString
上添加一个类别:
@implementation NSMutableAttributedString (MySearchAndReplaceCategory)
- (void)setAttributes:(NSDictionary *)attributes forOccurencesOfString:(NSString *)target
{
NSRange searchRange = NSMakeRange(0, self.length);
while ( searchRange.length )
{
NSRange range = [self.string rangeOfString:target options:0 range:searchRange];
if ( ! range.length )
break;
[self setAttributes:attributes range:range];
searchRange.length = NSMaxRange(searchRange) - NSMaxRange(range);
searchRange.location = NSMaxRange(range);
}
}
@end
然后使用类似的东西:
UIColor *color = [UIColor greenColor];
NSDictionary *attributes = [NSDictionary dictionaryWithObject:(__bridge id) color.CGColor
forKey:(__bridge id) kCTForegroundColorAttributeName];
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"This is a text"];
[text setAttributes:attributes forOccurencesOfString:@"text"];
答案 1 :(得分:0)
re:免费电话桥接
CFAtttributeString和NSAttributeString具有不同的属性键。
实施例。 Color Mac OS X:
NSForegroundColorAttributeName - NSColor - 默认blackColor kCTForegroundColorAttributeName - 与此属性关联的值必须是CGColor对象。默认值为黑色。