如何使用OpenSans自定义字体在Swift 4 **中用下划线和粗体显示文本范围

时间:2018-10-11 01:08:52

标签: ios iphone swift

这让我发疯,我找不到任何简单的简单答案来说明如何使文本范围加粗,并在 Swift 4中用自定义字体加下划线。

我浏览的每一页都有一部分信息,但它使我成螺旋形地走动。我发现Swift 3的下划线方法不包含自定义字体,下一个方法说要在Swift 4中使用粗体字体自定义版本,等等,但不包含下划线。非常令人沮丧。

所以。我有这句话

重置密码电子邮件已发送。 没听懂吗?重新发送

“再次发送”必须加粗并加下划线。它是一个完整的字符串,位于一个UILabel中。

请确保新方法使用了UIAttributedStringKey。

我知道这很简单,这就是为什么我发现它令人沮丧并且对它失去了耐心的原因。

哦,我目前在iOS 11上,XCode 9.4.1。我可能会在未来几天内进行更新。

预先感谢

编辑

嗨,DFD,谢谢您的评论。基本上,这就是我所拥有的代码(在swift 4.0中没有用,尽管我记得以前使用过该代码,但在Swift 3.0中几乎可以使用。

我必须在某个地方声明字体,而且我也没有找到用于粗体的代码,但是我确实有一些用于范围和下划线的代码。

欢呼

var text = self.completeText.text
let textRange = NSMakeRange(50, (text?.count)!)
let attributedText = NSMutableAttributedString(string: text!)
let underlineAttribute = [NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue]
attributedText.addAttribute(underlineAttribute)

*最终编辑*

这里有工作代码。

let label = self.completeText
let labelString = self.completeText.text
let attributedText = NSMutableAttributedString(string: labelString!)
let rangeToUnderline = (labelString! as NSString).range(of: "Send again")
attributedText.addAttribute(NSAttributedStringKey.underlineStyle, value: NSUnderlineStyle.styleSingle.rawValue, range: rangeToUnderline)

我将使用这些attrs添加OpenSansBold自定义字体,它应该可以正常工作。

感谢Adrian,感谢其他所有人的建议。非常感谢!

P.S我不认为有人对Swift 4.1上的属性字符串有不错的引用吗?会很好。

2 个答案:

答案 0 :(得分:1)

如果您没有看到“开放式Sans”,则是另外一个问题。要强调这一点,您将使用 NSMutableAttributedString (不是NSAttributedString)。

这是在字符串的下划线下划线的方式:

let label = UILabel()
let labelString = "Didn’t get it? Send again"
let attributedText = NSMutableAttributedString(string: labelString)
let rangeToUnderline = (labelString as NSString).range(of: "Send again")
attributedText.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: rangeToUnderline)

关于加粗字符串的一部分,here's how you'd do that。我太懒了以至于无法找到字体名称,进行测试等等,所以 我将留给您填写粗体空白以及在粗体和非粗体之间切换的逻辑。

答案 1 :(得分:0)

在标签Attributed Inspector上,将文本从Plain更改为Attributed。然后,您可以编辑文本并添加下划线,甚至将字体更改为粗体。

enter image description here