【发布时间】:2018-08-25 01:47:47
【问题描述】:
我正在尝试逐行突出显示UITextView 中的文本。我想遍历每一行并突出显示该行以供用户查看,然后我想删除突出显示效果以准备下一行。我已经尝试过但未能创建解决方案,这是我现在最好的机会。
这是我迄今为止所做的一些工作,由于某种原因,它目前用“NSBackgroundColor 1101”填充UITextView,我不知道为什么会这样。
func highlight() {
let str = "This is\n some placeholder\n text\nwith newlines."
var newStr = NSMutableAttributedString(string: "")
var arr:[String] = str.components(separatedBy: "\n")
var attArr:[NSMutableAttributedString] = []
for i in 0..<arr.count {
attArr.append(NSMutableAttributedString(string: arr[i]))
}
for j in 0..<attArr.count {
let range = NSMakeRange(0, attArr[j].length)
attArr[j].addAttribute(.backgroundColor, value: UIColor.yellow, range: range)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5){
for m in 0..<attArr.count {
newStr = NSMutableAttributedString(string: "\(attArr[m])\n")
self.textView.attributedText = newStr
}
}
attArr[j].removeAttribute(.backgroundColor, range: range)
//remove from texview here
}
}
如您所见,该算法应该剥离 textView 文本并将其放入数组中,方法是将每一行分隔为新的行分隔符。
接下来要做的是创建一个数组,其中填充了相同的文本,但作为可变属性字符串开始添加高亮属性。
每次出现突出显示的行时,都会有一小段延迟,直到下一行开始突出显示。如果有人可以帮助或指出正确的方向以开始正确实施,那将非常有帮助,
谢谢!
【问题讨论】:
标签: swift loops uitextview