首页 > 解决方案 > 在textview中一起使用Swift常规和粗体字体

问题描述

我正在尝试在 textview 中同时使用常规和粗体字体。当用户键入时,用户可以键入常规字体或(有一个写粗体的按钮)用户可以点击一个按钮来键入粗体。用户如何在同一个文本视图中输入常规和粗体字体?我可以使用哪种方法?

这就是我要的:例子

这是我的代码:

func textViewDidChangeSelection(_ textView: UITextView) {
    
    var partOne = NSMutableAttributedString()
    var partTwo = NSMutableAttributedString()
    
    let boldFontAttributes: [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.black, .font: UIFont.boldSystemFont(ofSize: 17)]
    let normalFontAttributes: [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.darkGray, .font: UIFont.systemFont(ofSize: 15)]
    let combination = NSMutableAttributedString()
    
    if boldButtonTap == false {
        partOne = NSMutableAttributedString(string: textView.text, attributes: normalFontAttributes)  
    } else {
        partTwo = NSMutableAttributedString(string: textView.text, attributes: boldFontAttributes)    
    }
    combination.append(partOne)
    combination.append(partTwo)
    textView.attributedText = combination
}

标签: swiftfontsuitextfielduitextview

解决方案


您需要使用文本字段的attributedText属性将其内容设置为样式文本。(属性文本属性采用类型的值NSAttributedString 创建一个允许用户将样式应用于文本视图内容的文本编辑器是一项艰巨的任务,超出了 SO 答案的范围。

(请注意,UITextField 也具有类似typingAttributes的属性,可让您更改用于输入新文本的属性。如果用户在输入新文本之前将字体设置为粗体,则可以使用它。)


推荐阅读