首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我需要逐字强调

我需要逐字强调
EN

Stack Overflow用户
提问于 2017-01-16 06:38:26
回答 1查看 1K关注 0票数 0

我有一个应用程序,我需要突出单词。它就像有声读物,读并突出阿拉伯文本。

有一些方法可以高亮显示标签中的特定子字符串,但我不想那样做。我想做些类似的事情。让我们考虑跟随sentance。

我是一名iOS开发人员&我在BEE技术公司工作

现在,我想说的是,突出字符号

代码语言:javascript
运行
复制
1-1,   -> I
3-4,   -> am
6-7,   -> an
9-11,  ->iOS
13-21, ->Developer

因为我不认为有任何方法可以简单地逐字逐句地高亮到行尾。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-16 10:28:34

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

我几乎要面对同样的情况,我为实现这一目标所做的一切(考虑到这些步骤):

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

下面是如何生成NSRange数组的示例

代码语言:javascript
运行
复制
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
 */
  • 使用 计时:继续检查当前秒是什么(声明一个变量cuurentSecond -for示例,并将其增加1/秒)。根据当前的秒数,您可以确定哪个单词应该高亮显示。例如:假设"I“应该在0到1秒之间突出显示,"am”应该在2到3秒之间突出显示,现在您可以检查cuurentSecond在0和1之间是否突出显示"I",如果是在2到3之间突出显示"am“等等.
  • 使用 NSMutableAttributedString:您应该使用它对单词进行实际高亮显示(如在第一个项目中提到的范围)。您还可以检查这些问题/答案,以了解如何使用它:

iOS -高亮显示UITextView中的一个或多个单词

如何在我的UITextView中用Swift一个一个地改变一些单词的风格?

希望这能帮上忙..。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41670716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档