【发布时间】:2019-06-18 00:37:17
【问题描述】:
我想要 2 个按钮,一个用于粗体,一个用于斜体。当用户按下任一按钮时,我希望它为他们在 textView 上输入的文本启用粗体/斜体,我该如何快速执行此操作?
【问题讨论】:
标签: ios swift textview uitextview
我想要 2 个按钮,一个用于粗体,一个用于斜体。当用户按下任一按钮时,我希望它为他们在 textView 上输入的文本启用粗体/斜体,我该如何快速执行此操作?
【问题讨论】:
标签: ios swift textview uitextview
将为两个按钮添加两个不同的操作。如果用户单击按钮,则粗体或斜体波纹管方法将被调用,并且 textView 的字体将发生变化。
@objc func boldButtonAction(sender : UIButton) {
textView.font = UIFont.boldSystemFont(ofSize: 14)
}
@objc func italicButtonAction(sender : UIButton) {
textView.font = UIFont.italicSystemFont(ofSize: 14)
}
【讨论】:
您可以使用键盘附件视图。
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
}
}
【讨论】: