1

过去几天,我一直在寻找合适的解决方案来突出显示 iOS 上的多个文本片段。总体思路类似于亚马逊 Kindle 应用程序中文本突出显示的工作方式。

我已经尝试了UITextViewas well UIWebView,但在可用性和性能方面我还没有找到合适的解决方案。

这个想法很简单。用户点击一个句子并且该句子被突出显示。当点击另一个句子时,该句子也会突出显示。用于突出显示文本的内置解决方案不适用于此目的。该解决方案的一个重要方面是文本需要设置样式,这在UITextViewiOS 6 中就可以实现。

我的问题是相当笼统的,也就是说,有哪些可行的方法来实现这种功能?是否有任何开源解决方案可以满足我的描述?

4

2 回答 2

1

我会建议你在多行 UILabel 上使用 NSAttributedString。从 iOS 6 开始,UILabels 默认支持属性字符串,无需任何修改。

NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"Some text and some more %@", dynamicString]];

//Change background color to highlight a sentence, by giving sentence's range
[str addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(sentenceStartIndex, sentenceLength)];

[label setAttributedText:str];

编辑:原来 UITextViews 也支持 NSAttributedString 我没有尝试过,所以你可以用 UITextViews 替换 UILabels。

于 2013-04-06T14:37:36.297 回答
0

我推荐使用Matt Thompson 的TTTAttributedLabel。它支持属性字符串,可以一直追溯到 iOS 4,并且是 MIT 许可的。

于 2013-04-06T14:52:16.287 回答