我需要突出显示单词的应用。它就像有声读物和读物。突出阿拉伯语文本。
有一些方法可以突出显示标签中的特定子字符串,但我不想这样做。我想要类似的东西。让我们考虑下面的发送。
"我是iOS开发人员&我在BEE Technologies"
工作现在,我要说的是,突出显示字符编号
1-1, -> I
3-4, -> am
6-7, -> an
9-11, ->iOS
13-21, ->Developer
因为我认为没有办法简单地逐字逐句突出显示直到行尾。
答案 0 :(得分:2)
这是一个通用的解决方案,它可能不是最好的解决方案,但至少它适用于我,因为它应该......
我 - 几乎 - 面对同样的情况,我为实现它所做的(考虑这些是要做的步骤):
以下是如何生成NSRange数组的示例:
let myText = "I am an iOS Developer"
let arrayOfWords = myText.components(separatedBy: " ")
var currentLocation = 0
var currentLength = 0
var arrayOfRanges = [NSRange]()
for word in arrayOfWords {
currentLength = word.characters.count
arrayOfRanges.append(NSRange(location: currentLocation, length: currentLength))
currentLocation += currentLength + 1
}
for rng in arrayOfRanges {
print("location: \(rng.location) length: \(rng.length)")
}
/* output is:
location: 0 length: 1
location: 2 length: 2
location: 5 length: 2
location: 8 length: 3
location: 12 length: 9
*/
使用Timer :继续检查当前秒(声明变量cuurentSecond
- 例如 - 并将其每秒递增1)。根据当前秒数,您可以确定应突出显示哪个单词。
例如:假设“I”应该在0到1秒之间突出显示,“am”应该在2到3秒之间突出显示,现在你可以检查0 {1之间的cuurentSecond
是否突出显示“I” ,如果介于2和3之间以突出显示“am”等等......
使用NSMutableAttributedString :您应该使用它来对单词进行实际突出显示(第一个项目中提到的范围)。您还可以查看这些问题/答案以了解如何使用它:
iOS - Highlight One Word Or Multiple Words In A UITextView
How can I change style of some words in my UITextView one by one in Swift?
希望这有助于......