ios - 我需要一个字一个字地强调

标签 ios objective-c swift swift3

我有一个应用程序,我需要在其中突出显示单词。这就像有声读物,可以朗读并突出显示阿拉伯语文本。

有一些方法可以突出显示标签中的特定子字符串,但我不想要那样。我想要类似的东西。让我们考虑以下句子。

“我是一名 iOS 开发人员,我在 BEE Technologies 工作”

现在,我想说的是,突出显示字符数

1-1,   -> I
3-4,   -> am
6-7,   -> an
9-11,  ->iOS
13-21, ->Developer

因为我不认为有任何方法可以简单地逐字突出显示直到行尾。

最佳答案

这是一个通用的解决方案,它可能不是最好的解决方案,但至少它对我有用...

我 - 几乎 - 遇到了同样的情况,我做了什么来实现它(考虑这些是要做的步骤):

  • 创建范围数组:我计算了每个单词的范围并将它们添加到数组中,以便在确定应突出显示哪个单词(范围)时更容易。例如,当你高亮“I”时,你应该高亮索引为0的范围等等...

这是一个如何生成 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 秒之间突出显示,现在您可以检查 cuurentSecond 是否在 0 到 1 之间突出显示“我”,如果在2到3之间高亮显示"is"等等...

  • 使用 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?

希望这对您有所帮助...

关于ios - 我需要一个字一个字地强调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41670716/

相关文章:

ios - 使用 iOS 向服务器发送数据/从服务器接收数据的首选方法/格式?

iphone - 增加 tabBarItem 图像大小

objective-c - 从数组中获取特定长度的字符串

ios - 是否可以通过扩展中的 Swift 4 KeyPaths 在 UIView 上设置属性?

ios - SIGTRAP(TRAP_BRKPT) CollectionView cellForItemAt IndexPath 中崩溃

ios - 通知是否进入队列,直到观察者捕获它? ( objective-c )

ios - TableView 页脚不随内容滚动

iphone - 使用 iPhone 的排序描述符对核心数据位置变化进行排序

iphone - 无法从 for-in 循环中更新 NSMutableDictionary 值?

swift - 在第二次点击时取消选择 UICollectionView 单元格