[英]How to change a text color for a certain attributed string or make it bold?
假設我有NSString * hello = @“ hello world”;
現在,我需要一個加粗的字符串,在字符串中,hello world中的地獄被加粗。
網路上有個功能可以做到:
- (NSMutableAttributedString*) word:(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])];
range = NSMakeRange(range.location + range.length, length - (range.location + range.length));
count++;
}
}
return mutableAttributedString;
}
但是,該功能不起作用,因為mutableAttributedString不支持setTextColor
我也試過
NSDictionary * dict = @{kCTFontAttributeName:boldFontName};
[mutableAttributedString setAttributes:{kCTFontAttributeName:boldFontName} range:NSMakeRange(range.location, substringToHighlight.length)];
但收到一條消息,未定義kCTFontAttributeName。
您可以使用rangeOfString:options:range:或NSScanner(還有其他可能,例如regexp,但無論如何)。
根據給定的選項,在接收器的給定范圍內查找並返回給定字符串首次出現的范圍。
(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)aRange
這是另一種解決方案:
然后,您需要像這樣將其轉換為NSMutableAttributedString
。
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"hello world"];
NSRange selectedRange = NSMakeRange(0, 4); // 4 characters, starting at index 0
[string beginEditing];
[string addAttribute:NSFontAttributeName
value:[NSFont fontWithName:@"Helvetica-Bold" size:12.0]
range:selectedRange];
[string endEditing];
我認為這是最好的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.