设置 NSAttributed String 属性会覆盖子字符串属性

2024-02-26

我创建了一个可变字符串,看起来像@”测试 MeIn:绿色 颜色:不同:绿色 颜色:颜色"

NSMutableAttributedString *mutableText = [[NSMutableAttributedString alloc] initWithAttributedString:myString];

UIColor *foregroundColor = [UIColor blackColor];
NSString *key = NSForegroundColorAttributeName;

[mutableText addAttribute:key value:foregroundColor range:NSMakeRange(0, myString.length)];

当我添加属性 foregroundColor 时,子字符串中现有的绿色将被指定的黑色覆盖。虽然我可以更改代码来设置子字符串的绿色,但我想知道是否有其他方法可以将样式应用于没有样式的字符串部分而不覆盖现有样式。


您可以枚举字符串中的每个属性范围,并且仅更改尚未设置的属性

 NSMutableAttributedString* aString = 
 [[NSMutableAttributedString alloc] initWithString:@"testMeIn DIFFERENT Colors"];

 [aString setAttributes:@{NSForegroundColorAttributeName:[UIColor greenColor]} 
                  range:(NSRange){9,9}];

 [aString enumerateAttributesInRange:(NSRange){0,aString.length}
                             options:nil
                          usingBlock:
     ^(NSDictionary* attrs, NSRange range, BOOL *stop) {

          //unspecific: don't change text color if ANY attributes are set
         if ([[attrs allKeys] count]==0)
             [aString addAttribute:NSForegroundColorAttributeName 
                             value:[UIColor redColor] 
                             range:range];

         //specific: don't change text color if text color attribute is already set
         if (![[attrs allKeys] containsObject:NSForegroundColorAttributeName])
             [aString addAttribute:NSForegroundColorAttributeName 
                             value:[UIColor redColor] 
                             range:range];
     }];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置 NSAttributed String 属性会覆盖子字符串属性 的相关文章

随机推荐

  • 带有选择死锁的嵌套更新

    背景 我正在使用一些代码 似乎deadlock经常与自己在一起 在Java中 它产生一个DeadLockLoserDataAccessException定期地 并且导致死锁的违规语句通常是itself 这是在 InnoDB 的事务中运行的
  • deleteRow 有时会删除右边的行,有时则不会在 Javascript 中删除

    我有一张桌子 每行的末尾都有一个 href X 用于删除该行 这很简单 现在 当您单击任意第 2 行的 X 时 它会删除第 2 行 但是当您单击第 3 行时 它会删除第 4 行 这是我的代码 HTML table align center
  • 构建重新训练的初始 SavedModel 后清空变量文件夹

    我正在尝试导出经过重新训练的初始模型 我读过这个几乎类似的问题here https stackoverflow com questions 43001719 deploy retrained inception savedmodel to
  • 求数组中绝对差值之和最小的一个数

    例如 array a 1 1 10 我们需要找到 x 这样 x 1 x 1 x 10 是最小值 这里 x 是 1 可以用贪心的方法解决吗 比如取平均值或其他方法 注意 取平均值不起作用 why 我只能想出O nlogn 解决方案 二分搜索
  • 默认使用maven静态编译.groovy

    我现在在我们的项目中使用maven编译 groovy 我的 pom xml 是
  • 跟踪 PHP 中的内存使用情况

    我正在尝试跟踪处理 URL 的脚本的内存使用情况 基本思想是在将另一个 URL 添加到 cURL 多重处理程序之前检查是否有合理的缓冲区 我使用 滚动 cURL 概念 在多处理程序运行时处理 URL 数据 这意味着每次现有 URL 处理和删
  • 为什么在这种特殊情况下,instanceof 模式匹配不能与 else if 一起使用?

    以下代码片段无法在 javac 版本 17 Temurin 上编译 class Instanceof static void doesNotWork Object o if o null throw new Error else if o
  • NSPredicate 对一个查询字符串进行多次比较

    我想知道是否有一种方法可以简化 NSPredicate 该 NSPredicate 接受多个比较目标的单个查询字符串 我正在搜索同一查询字符串的核心数据实体的多个属性 我当前的查询看起来像这样 NSPredicate predicateWi
  • 如何在 R 中的并行方法中使用无用的记录器进行记录?

    我在 R 中使用无用的记录器进行日志记录 我有一个使用 R 中的 Snowfall 实现的并行算法 并行进程的每个核心都会在记录器中记录中间输出 但是这个输出没有显示在记录器中 我们可以在使用降雪的并行作业中使用徒劳的记录器进行记录吗 添加
  • Android 初学者应用程序中的 openSearch() 未定义

    我刚刚开始学习 Android 初学者教程 现在面临一个问题 在这一页 http developer android com training basics actionbar adding buttons html Respond在 响应
  • 如何播放组合声音,就像从一群发声物体发出的声音一样

    假设我有 100 个 squeaker 类的实例 每个 吱吱声 物体都能够单独发出吱吱声 每个squeaker实体使用相同的 mp3资源 当所有吱吱声一起出现在屏幕上时 例如作为小角色 我希望它们都大约 但不完全 同时发出吱吱声 以便将它们
  • 逆时针旋转矩阵M*N的每个环

    我无法旋转M N逆时针方向的矩阵 我的代码可以正常工作3 3矩阵 但是当我尝试任何其他情况时 它不起作用假设我正在这样做4 4矩阵 则只有外部元素旋转 内部 4 个元素 即 6 7 10 11 不旋转 我的输入是 1 16 个数字4 4 m
  • mvccontrib grid - 如何添加 id

    我想向我构建的 mvccontrib 网格的 tr 元素添加一个 id tr tr tr tr 因此 如果表包含 10 行 则 id 为 0 到 9 一种方法是向我的实体添加一个附加项目来存储该值 然后将其创建为隐藏列 并将 id 作为该项
  • 有没有更快的方法来生成 .csv 文件作为 groupby 和循环的替代方法?

    我必须生成数十个包含数百万行和数十列的 csv 文件 我目前正在通过执行以下操作来生成文件groupby列 A 和 B 并循环动态生成文件to csv 下面是我正在尝试做的事情的一个例子 有没有更快的技术 我的实际数据帧需要 10 多分钟才
  • Visual Studio 中的版本控制

    我目前正在开发一个大型项目 即将做出一些重大更改 并且正在寻找一种方法来 备份 我之前的工作 Visual Studio 中是否有内置功能可用于版本控制 该项目仅由我开发 并且不使用 Team Foundation Server 这是我大部
  • 如何使用带有要价和出价的 pandas 数据框计算成交量加权平均价格 (VWAP)?

    如果我的表格如下所示 如何创建另一个名为 vwap 的列来计算 vwap time bid size bid ask ask size trade trade size phase 0 2019 01 07 07 45 01 064515
  • 如何获取 JDesktopPane 中 JInternalFrames 的 z 顺序

    如何获取 JDesktopPane 内所有 JInternalFrame 的 z 顺序 层深度 似乎没有直接的方法 有任何想法吗 虽然我还没有尝试过这个 Container http java sun com javase 6 docs a
  • R Quantmod::getFinancials

    我正在使用quantmod包裹 我有一个这样的股票向量 c AAPL GOOG IBM GS AMZN GE 我想创建一个函数来计算股票的息税前利润 营业收入 总收入 因此 对于给定的股票 我使用以下仅适用于 GE 的代码 前提是在股票代码
  • j2me 应用程序中出现 OutOfMemoryError

    我正进入 状态OutOfMemoryException在 J2ME 应用程序中 我怎样才能找到导致此错误的原因 以及如何防止出现此错误 我发出一个http请求 当请求未完成时 屏幕会显示加载图像 就像浏览器在加载页面时显示的那样 这是通过创
  • 设置 NSAttributed String 属性会覆盖子字符串属性

    我创建了一个可变字符串 看起来像 测试 MeIn 绿色 颜色 不同 绿色 颜色 颜色 NSMutableAttributedString mutableText NSMutableAttributedString alloc initWit