swift - 在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
}
解决方案
您需要使用文本字段的attributedText
属性将其内容设置为样式文本。(属性文本属性采用类型的值NSAttributedString
创建一个允许用户将样式应用于文本视图内容的文本编辑器是一项艰巨的任务,超出了 SO 答案的范围。
(请注意,UITextField 也具有类似typingAttributes
的属性,可让您更改用于输入新文本的属性。如果用户在输入新文本之前将字体设置为粗体,则可以使用它。)
推荐阅读
- sql - 如何使用 dax 获取未加入的项目
- batch-file - Jmeter - 报告仪表板的批处理文件创建
- asp.net-mvc - 某些机器上的 ADFS 身份验证循环
- .htaccess - https 上的非 www 到 www
- regex - 如何将 RegEx 与 React Router 一起使用?
- .net - 如何为 WebOperationContext.OutgoingWebResponseContext 设置正文
- python - 使用 docker python "no space left on device" 后无法正确重启 ubuntu,外围设备上没有可用内存
- backbone.js - 如何检查backbone.radio中是否存在处理程序?
- java - 如何使 JTabbedPane 中的选项卡可重新排列?
- webpack - 忽略全局变量 webpack4/babel7