Objective c NSAttribute字符串的用途是什么?

Objective c NSAttribute字符串的用途是什么?,objective-c,cocoa,cocoa-touch,Objective C,Cocoa,Cocoa Touch,正如在标题中一样,我很难理解属性化字符串的用途,除了它用于UITableViewController中的UI(例如UIRefreshControl)之外 它有什么好处?它只允许某些字符串具有自定义颜色、字体等吗?你是对的,它就是这么做的。它允许您将可视属性指定给字符串的任何部分 事实上,它在某些情况下非常有用。例如,可以在某些文本上添加删除线属性,以直观地指示该文本已被删除 另一个例子是,假设您有一个短段落显示为黑色标签,带有属性字符串,您可以用红色突出显示两个关键字 NSAttributedS

正如在标题中一样,我很难理解属性化字符串的用途,除了它用于UITableViewController中的UI(例如UIRefreshControl)之外


它有什么好处?它只允许某些字符串具有自定义颜色、字体等吗?

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

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

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

NSAttributedString在许多情况下非常有用

在中可以呈现自定义字体、自定义标签颜色;它可以应用多种不同的文本样式,如下划线、删除线、粗体、斜体、标题;或者高亮显示您想要的字符串的任何部分

但在我看来,最好的部分是,您甚至可以使用NSAttributedString在label实例中呈现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];

您可以在这里阅读所有内容:谢谢Eugene,我总是忘记联机开发文档比XCode中的文档更具信息性。在竞争平台上,像按钮这样的操作很难实现。不要低估这里的附加值。