NSAttributedString的目的是什么?

时间:2014-10-11 22:47:40

标签: objective-c cocoa cocoa-touch

正如在标题中一样,我无法理解属性字符串的用途,除了在UITableViewController中的UI(例如UIRefreshControl)之类的情况下使用它。

它带来了什么好处?是否只允许某些字符串具有自定义颜色,字体等?

2 个答案:

答案 0 :(得分:1)

你是对的,这就是它的全部。它允许您将可视属性分配给字符串的任何部分。

事实上,在某些情况下它非常有用。例如,您可以在某些文本上添加删除线属性,以直观地指示文本已删除。

另一个例子,假设您有一个短段显示为黑色标签,带有属性字符串,您可以用红色突出显示几个关键字。

答案 1 :(得分:1)

在许多情况下,

NSAttributedString 非常有用。

在可以渲染自定义字体,自定义颜色为您的标签;它可以应用许多不同的文本样式,如下划线,删除线,粗体,斜体,标题;或高亮显示所需字符串的任何部分。

但在我看来,最好的部分是你甚至可以使用 NSAttributedString 在标签实例中呈现HTML文本,以防你想用CSS显示样式文本:

NSString *htmlString = @"<style>h1{ color: cyan }</style>"
                       "<h1>Hello World</h1> "
                       "<p>This is a paragraph</p>";

NSDictionary *option = @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType };
NSError *dealDescriptionAttributedError;
NSData *dealDescriptionData = [string dataUsingEncoding:NSUTF16StringEncoding];
NSAttributedString *htmlAttributedString = [[NSAttributedString alloc] initWithData:dealDescriptionData
                                                                            options:option
                                                                 documentAttributes:nil
                                                                              error:&dealDescriptionAttributedError];