iphone - 关于 AttributeString - 将多次出现设为粗体

标签 iphone ios ipad

我正在尝试使用类似以下内容在属性字符串中多次出现粗体

[attrStr setFont:[UIFont ...] range:[attrStr.string rangeOfString:@"hello world"]];

如您所知,“rangeOfString”总是返回匹配项的第一个匹配项……我对 iOS 还是很陌生,只是想知道将所有匹配项设置为粗体的最佳方法是什么……中是否提供了任何函数NSString 什么的?

提前致谢!

最佳答案

您应该首先尝试获取字符串中的所有范围,然后为每个范围设置属性。 stackoverflow 上有一些很棒的代码示例:https://stackoverflow.com/a/4653266/381870

编辑:

举个例子

- (NSArray *)rangesOfString:(NSString *)searchString inString:(NSString *)str {
    NSMutableArray *results = [NSMutableArray array];
    NSRange searchRange = NSMakeRange(0, [str length]);
    NSRange range;
    while ((range = [str rangeOfString:searchString options:0 range:searchRange]).location != NSNotFound) {
        [results addObject:[NSValue valueWithRange:range]];
        searchRange = NSMakeRange(NSMaxRange(range), [str length] - NSMaxRange(range));
    }
    return results;
}

用法:

NSArray *results = [self rangesOfString:@"foo" inString:@"foo bar foo"];
NSLog(@"%@", results);

给你

(
    "NSRange: {0, 3}",
    "NSRange: {8, 3}"
)

关于iphone - 关于 AttributeString - 将多次出现设为粗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667276/

相关文章:

iphone - 使用 UIScrollView 从上到下滚动

iphone - 轻按 UIBarButtonItem 时未调用操作

java - 来自 Java 开发人员 POV 的 iOS 委托(delegate)

ios - 更改导航栏时平滑过渡 "prefersLargeTitles"

ios - 创建数据表

iphone - 来自两个不同 UITableView 的单个文本

iphone - xcode 中的时、分、秒分开

ios - iPad 显示阵列中的图像

iphone - iOS:推送通知并在登录时重新注册设备。

ios - 当 segue 完成时,NSString 被删除