Swift 3在UITextView中更改所选文本的颜色
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 3在UITextView中更改所选文本的颜色相关的知识,希望对你有一定的参考价值。
我刚从swift 2.3将代码更改为Swift 3。以下代码适用于swift 2.3,但swift 3没有效果。
我想开发一个自定义文本编辑器。并让用户选择文本并更改其颜色。为此,我使用此代码。
let selectedRange = textView.selectedRange
let currentAttr = textView.textStorage.attributes(at: selectedRange.location, effectiveRange: nil)
var attrName = NSForegroundColorAttributeName
if !isForeGround{
attrName = NSBackgroundColorAttributeName
}
if currentAttr[attrName] == nil || currentAttr[attrName] as! UIColor != selectedUIColor{
let dict = [attrName:selectedUIColor]
let currentFont = currentAttr[NSFontAttributeName]
let fontDescriptor = (currentFont! as AnyObject).fontDescriptor
let updatedFont = UIFont(descriptor: fontDescriptor!, size: 0.0)
let dict2 = [NSFontAttributeName: updatedFont]
textView.textStorage.beginEditing()
if currentAttr.count>0{
textView.textStorage.addAttributes(dict, range: selectedRange)
}else{
textView.textStorage.setAttributes(dict, range: selectedRange)
}
textView.textStorage.addAttributes(dict2, range: selectedRange)
textView.textStorage.endEditing()
}
运行成功,但对文本颜色没有影响。
答案
这对我有用。
首先,您需要捕获所选文本,其中包括:
let selectedText = textView.selectedRange
然后,您创建属性:
let myAttribute = [ NSForegroundColorAttributeName: selectedUIColor]
最后:
textView.textStorage.addAttributes(myAttribute, range: selectedText)
这必须在任何发件人调用的Action中
希望它也适合你!问候
另一答案
可以使用更改选定的文本
self.textView.tintColor = .red
以上是关于Swift 3在UITextView中更改所选文本的颜色的主要内容,如果未能解决你的问题,请参考以下文章
iPhone iOS如何更改UITextView中某些单词的颜色?
在 Swift 中更改 UITextView 的 textColor
Swift 4 UITableView 将一个单元格设为 UITextView