【问题标题】:Attributed string underline not working with external fonts属性字符串下划线不适用于外部字体
【发布时间】:2018-11-14 08:37:25
【问题描述】:

我有UITextView 并想在其中添加部分文本的链接。这些嵌入的链接应加下划线。当我将其font 设置为内置链接之一时,它可以正常工作,但使用Ubuntu font 它即使设置了超链接颜色也不起作用。

let linkTextView = UITextView()
let linkAttributes: [NSAttributedString.Key: Any] = [NSAttributedString.Key.foregroundColor: Design.colorPrimary,
        NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue,]
linkTextView.linkTextAttributes = linkAttributes
linkTextView.isUserInteractionEnabled = false

let allText = "example link"
let linkText = "link"
let NStext = NSString(string: allText)
let attributedString = NSMutableAttributedString(string: allText)

attributedString.addAttribute(.link, value: NSURL(string: "https://www.apple.com")!, range: NStext.range(of: linkText))
linkTextView.attributedText = attributedString
linkTextView.heightAnchor.constraint(equalToConstant: 100).isActive = true

linkTextView.font = UIFont(name: "Ubuntu", size: 20)!//this does not
//linkTextView.font = UIFont(name: "ArialMT", size: 20)! // this works

ArialMT:

Ubuntu:

那我该如何解决呢?

【问题讨论】:

标签: ios swift uitextview nsattributedstring


【解决方案1】:

您是否在设置属性字符串之前尝试更改字体?

在 textColor 不受字体影响的情况下,更改字体时,下划线可能会被删除。

问候

【讨论】:

  • 当我尝试在设置属性字符串之前更改字体时,它会忽略我设置的字体,用默认字体为超链接加下划线
  • 有趣的是NSUnderlineStyle.doubleUbuntuArialMT 都可以正常工作
  • 您是否尝试使用 NSFontAttributeName 在属性中设置字体?
  • 我不确定NSFontAttributeName是否可以在swift 4.2中使用。据我所知,它已弃用为 NSAttributedString.font 并且编译器不建议这样做。
猜你喜欢
  • 2017-07-13
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
相关资源
最近更新 更多