UITextView linkTextAttributes 字体属性不适用于 NSAttributedString

2023-12-27

我有一个NSAttributedString从包含一些链接的 HTML 生成。属性字符串显示在 UITextView 中。我希望为链接应用不同的字体样式并正在设置linkTextAttributes为了这。我已经添加NSForegroundColorAttributeName, NSFontAttributeName and NSUnderlineStyleAttributeName。由于某种原因,应用了前景色,但未应用其余属性。

myTextView.linkTextAttributes = [NSForegroundColorAttributeName : UIColor.redColor(), NSFontAttributeName : textLinkFont, NSUnderlineStyleAttributeName : NSUnderlineStyle.StyleNone.rawValue]

有其他人遇到过这个问题吗?如何更改链接的字体样式,而无需将内联 CSS 应用到原始 HTML?谢谢。


不确定为什么 linkTextAttributes 不适用于字体名称。但我们可以通过更新 NSAttributedString 的链接属性来实现这一点。检查下面的代码。

        do {
        let htmlStringCode = "For more info <a href=\"http://www.samplelink.com/subpage.php?id=8\">Click here</a>"

        let string = try NSAttributedString(data: htmlStringCode.dataUsingEncoding(NSUTF8StringEncoding)!, options: [NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: NSUTF8StringEncoding], documentAttributes: nil)

        let newString = NSMutableAttributedString(attributedString: string)
        string.enumerateAttributesInRange(NSRange.init(location: 0, length: string.length), options: .Reverse) { (attributes : [String : AnyObject], range:NSRange, _) -> Void in
            if let _ = attributes[NSLinkAttributeName] {
                newString.removeAttribute(NSFontAttributeName, range: range)
                newString.addAttribute(NSFontAttributeName, value: UIFont.systemFontOfSize(30), range: range)
            }
        }
        textField.attributedText = newString
        textField.linkTextAttributes = [NSForegroundColorAttributeName : UIColor.redColor(), NSUnderlineStyleAttributeName : NSUnderlineStyle.StyleNone.rawValue]

    }catch {
    }

这是目标C代码:

NSDictionary *options = @{NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType};
NSData *data = [html dataUsingEncoding:NSUnicodeStringEncoding allowLossyConversion:NO];

NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:data options:options documentAttributes:nil error:nil];
NSMutableAttributedString *attributedStringWithBoldLinks = [[NSMutableAttributedString alloc] initWithAttributedString:attributedString];

[attributedString enumerateAttributesInRange:NSMakeRange(0, attributedString.string.length) options:NSAttributedStringEnumerationReverse usingBlock:^(NSDictionary<NSString *,id> * _Nonnull attrs, NSRange range, BOOL * _Nonnull stop) {

    if ([attrs objectForKey:NSLinkAttributeName]) {
        [attributedStringWithBoldLinks removeAttribute:NSFontAttributeName range:range];
        [attributedStringWithBoldLinks addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"YourFont-Bold" size:16.0] range:range];
    }
}];

self.linkTextAttributes = @{NSForegroundColorAttributeName : [UIColor redColor]};

self.attributedText = attributedStringWithBoldLinks;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UITextView linkTextAttributes 字体属性不适用于 NSAttributedString 的相关文章

随机推荐

  • Tomcat应用部署监听器

    我想知道如何监听 Tomcat Web 应用程序部署 我希望每次从容器中取消部署应用程序或将应用程序部署到容器时都调用我的侦听器 我已经调查了一下并发现一些听众 即LifecycleListener可以通过 JMX 注册 但不幸的是 这个监
  • 在 iOS 中创建“流布局”类型布局的最佳/最简单方法是什么

    Q1 我有三个控件 UILabel UIButton and UILabel在一行中 我想以编程方式将它们一个接一个地排成一行 没有任何间隙 类似于Java Android Flowlayout 布局 因为每个控件上的文本长度会因用户操作而
  • 使用 Python 的 Mechanize 模块验证 br.submit()

    只是尝试使用 mechanize 登录网站 当我打印 br form 时 我可以看到我的凭据输入到我的表单中 但我不知道如何正确提交表格 我使用 br submit 并尝试通过打印 br title 来验证它是否已进入下一页 但出现的标题是
  • 使用 os.kill() 后如何找出子进程何时终止?

    我有一个 Python 程序 准确地说 是一个 Django 应用程序 它使用以下命令启动子进程subprocess Popen http docs python org 2 7 library subprocess html subpro
  • 如何在Windows上自动启动virtualenv环境

    谁能给我一些关于在 Windows 上自动启动 virtualenv 应用程序的建议 我有一个在 Gunicorn 上运行的小型 Flask 应用程序 运行良好 但是如何将其投入生产呢 我不想手动进入并 cd 进入目录并输入 activat
  • 如何排除图例中的系列 (Flex)

    在弹性图表中 我想画一些与特定系列相关的 参考线 之类的东西 因此 这些线不是独立的系列 不应在图例中显示 是否可以从图表图例中排除某些系列 谢谢 我详细阐述了 Luis B 的答案 使其动态地反映在折线图的数据提供者上 这样 图例仅显示图
  • 在 Java 中使用正则表达式查找重复模式

    我正在使用正则表达式来匹配以下字符串 String sample1 key value key value key value key value 正如您所看到的 key value 定期重复 唯一的分隔符是 管道 注意事项 键 gt 只是
  • 为什么“mvn verify”不运行我的集成测试?

    我有一个多模块项目 并且在根 pom 中定义了故障保护 如下所示
  • TargetName 属性无法在 Style Setter 上设置,那么它是如何设置的呢?

    过去一周我一直在探索 WPF 所以它对我来说仍然很陌生 我正在做的事情之一是简单的动画 在本例中是一个弹跳的笑脸 我的攻击计划是 做一个笑脸 我已经做到了这一点 计算一个简单对象的弹跳动画 我已经做到了这一点 抽象该动画 以便它可以在多个地
  • 类型错误:无法将 psycopg2.extensions.Binary 转义为二进制

    我尝试通过 sqlalchemy 将二进制文件存储到 postgresql 中 并且文件是从客户端上传的 对错误消息进行了一番谷歌 让我明白了这个源文件 https github com psycopg psycopg2 blob mast
  • memcpy 不会抛出异常吗?

    希望这个问题有一个简单的答案 因为这似乎是一个简单的问题 但是我无法在互联网上找到任何有关此问题的信息 在下面的代码片段中 Visual Studio 抱怨 delete bytes 行的代码无法访问 try memcpy bytes ot
  • 比较表达式语言中的字符串和布尔值

    我有这种行为我不太理解 someVar someVar class name someVar error outputs false java lang Boolean true 怎么解释呢 为了首先测试两个 事物 是否具有相同的类型 然后
  • “require_tree 参数必须是目录”rails 3.1.1 预编译资产

    我在这里一直在尝试让资产在我的生产服务器上进行预编译 使用 ruby 1 9 2 和 Rails 3 1 1 进行简单的 ubuntu 安装 并尝试使用新的 sprockets 2 10 进行 3 1 2RC require tree 参数
  • Bash 匿名管道

    在设计执行特定任务的命令链时 我遇到了匿名管道的行为与预期不同的问题 由于我运行的原始命令太复杂 无法在此处解释 因此我创建了一个示例来显示问题 我知道所有这些命令基本上什么也没做 另外 我使用 pv 来显示数据是否实际上从输入复制到输出
  • LWJGL'java.lang.UnsatisfiedLinkError':java.library.path中没有lwjgl

    Exception in thread main java lang UnsatisfiedLinkError no lwjgl in java libr ary path at java lang ClassLoader loadLibr
  • Windows 商店应用程序 - 显示 PDF

    我正在创建一个 Windows 商店应用程序 以前称为 Metro 应用程序 它能够读入并显示几种不同的文件类型 jpg wmv pdf 等 每种文件类型都使用适当的 XAML 控件显示 例如 jpg 使用 Image wmv 使用 Med
  • 生成的代码与 PyOTP 示例不匹配

    当我发现时 我正在寻找基于 Python 时间的 OTP 库PyOtp https github com pyotp pyotp 我扫描了示例二维码 使用 Google Authenticator 并运行关联的示例代码 import pyo
  • PHP7 - 连接到sybase数据库

    http php net manual en function sybase connect php http php net manual en function sybase connect php从 PHP7 开始被删除 所以现在我收
  • Docker突然无法识别-p命令

    所以我刚刚在我的 Mac 上更新了 Docker 并且适应 Docker 似乎相当具有挑战性和令人困惑 几周前 我能够通过运行以下命令将 docker 容器上的端口 8834 转移到本地主机上的端口 8834 这是我的命令行历史记录 845
  • UITextView linkTextAttributes 字体属性不适用于 NSAttributedString

    我有一个NSAttributedString从包含一些链接的 HTML 生成 属性字符串显示在 UITextView 中 我希望为链接应用不同的字体样式并正在设置linkTextAttributes为了这 我已经添加NSForeground