Ben*_*Ben 7 objective-c nsattributedstring ios ios8 ios9
在iOS 8(和8.1 beta)下,创建NSAttributedString的性能远远低于7(2-3x).如果您在同一视图上使用多个实例,则这一点尤其明显,加载4个不同的标签将导致用户点击并显示新视图时延迟超过一秒.
不幸的是,你甚至无法把它扔进另一个线程,因为它在幕后使用WebKit.我向Apple提交了一个错误,但我需要有关变通方法或更好的实现方法的想法.
在viewDidLoad中:
self.labelOne.attributedText = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
documentAttributes:nil
error:&error];
Run Code Online (Sandbox Code Playgroud)
快速示例项目:https://github.com/BenSS/AttributedStringTest
更新:
iOS9再次改进了东西,因此速度并没有完全破坏UI交互.不幸的是,它还没有像iOS7那样快.(用演示自己测试!)
在WWDC今年(2014年),我将这一行为与TextKit团队联系起来.具体来说,我正在详细阐述我们中的一些人如何需要支持异步HTML解析.他们感到惊讶的是,没有异步创建属性字符串的公共API.
鉴于我们的某些应用程序的核心处理渲染大量HTML文本,即使在iOS 7上,系统提供的渲染也不太理想.因此,我被告知要提交错误; 关于这个问题提出的错误越多,苹果解决它的可能性就越高.
我的建议是使用DTCoreText,它们提供了我们在这个问题上所需要的.唯一的其他解决方案是等待.
| 归档时间: |
|
| 查看次数: |
4825 次 |
| 最近记录: |