2013-04-06 99 views
1

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

我已经使用UITextView以及UIWebView进行了实验,但是在可用性和性能方面我还找不到合适的解决方案。

这个想法很简单。用户点击一个句子并突出显示该句子。当轻击另一个句子时,该句子也会突出显示。突出显示文本的内置解决方案不适合此目的。该解决方案的一个重要方面是文本需要样式化,自iOS 6以来可以使用UITextView

我的问题是相当普遍的,也就是说,实现这种类型的功能有哪些可行的方法?是否有任何开源解决方案可以完成我所描述的内容?

回答

1

我会建议你在多行UILabels上使用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。

+0

我的主要问题不是对'NSAttributedString'的支持太多,而是如何实现突出显示多个文本片段的能力。正如我在问题中提到的,我知道iOS 6以后'UILabel'和'UITextView'都支持'NSAttributedString'。 – 2013-04-06 15:42:52

0

我推荐使用Matt Thompson的TTTAttributedLabel。它支持归属字符串,可以一直回到iOS 4,并获得MIT许可。

+0

项目的部署目标是iOS 6,所以我可以使用'UILabel'和'UITextView'。主要问题是如何实现突出显示多个文本片段的能力。 – 2013-04-06 15:44:00

+0

在这种情况下,guenis的答案应该适合你 - 只需添加多个属性,每个属性的范围不同。 – jhabbott 2013-04-06 15:47:09

相关问题