在textView中输入的粗体/斜体样式文本

时间:2019-06-18 00:37:17

标签: ios swift textview uitextview

我想要2个按钮,一个为粗体,另一个为斜体。当用户按下任一按钮时,我希望它为他们在textView上输入的文本启用粗体/斜体字,该如何迅速完成?

2 个答案:

答案 0 :(得分:0)

将为两个按钮添加两个不同的动作。如果用户单击按钮,则会调用粗体或斜体波纹管方法,并且textView的字体也会更改。

@objc func boldButtonAction(sender : UIButton) {
    textView.font = UIFont.boldSystemFont(ofSize: 14)
}

@objc func italicButtonAction(sender : UIButton) {
    textView.font = UIFont.italicSystemFont(ofSize: 14)
}

答案 1 :(得分:0)

您可以使用键盘附件视图。

override func viewDidLoad() {
    super.viewDidLoad()

    let bar = UIToolbar()
    let boldButton = UIBarButtonItem(title: "Bold", style: .plain, target: self, action: #selector(toggleBold))
    let italicButton = UIBarButtonItem(title: "Italic", style: .plain, target: self, action: #selector(toggleItalic))
    bar.items = [boldButton, italicButton]
    bar.sizeToFit()
    textView.inputAccessoryView = bar


    guard let font = getFont() else { assert(false); return }
    textView.font = font
    textView.typingAttributes = [NSAttributedString.Key.font: font]
}

如果启用/禁用粗体和斜体,则将布尔值切换为1和0,并将字体更新为:

func updateFont() -> UIFont? {
    let italic = keyboardAddon.italic
    let bold = keyboardAddon.bold
    let font = UIFont(name: "Helvetica", size: 14.0)

    if bold && italic {
        return font?.withTraits([ .traitBold, .traitItalic ])
    } else if bold {
        return font?.withTraits(.traitBold)
    } else if italic {
        return font?.withTraits(.traitItalic)
    } else {
        return font
    }
}