我需要在不刷新页面的情况下在播放 TTS 时动态更新 UiTextView 内容中的文字。
问题:当 tts 播放每个单词时,委托(delegate) (willSpeakRangeOfSpeechString:(NSRange)characterRange utterance:(AVSpeechUtterance *)utterance)
正在调用。
所以当时我正在使用 NSMutableAttributedString
更新文本颜色。
在这个过程中,textview中的内容是不稳定的,因为每个单词页面都在刷新。
所以我需要在不刷新页面的情况下更新 textview 中的文本。
我是这样写代码的。
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:_theContent ];
[attrStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:self.fontSize] range:[self wholeArticleRange]];
[attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:theRange];
textview.attributedText = attrStr;
--在android中我们使用spannable class来做这个。 IOS中有这样的类吗?
请尽快给我们解决方案
提前致谢。
最佳答案
您可以访问 TextView 的 textStorage
属性,类型为 NSTextStorage
,它是 NSMutableString
的子类。从那里您可以使用任何 NSMutableString
操作,包括在各种范围内设置属性,而无需将全新的字符串发送到 TextView (这会使其闪烁)。
如果您必须进行多次调用,请不要忘记调用 beginEditing
和 endEditing
将编辑分组在一起,以提高性能。
关于ios - 在特定范围内动态更新 UITextView 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27060657/