iOS 8 (および 8.1 ベータ版) では、NSAttributedString を作成するパフォーマンスは 7 よりも大幅に低下します (2 ~ 3 倍)。これは、同じビューで複数のインスタンスを使用している場合に特に顕著です。4 つの異なるラベルを読み込むと、ユーザーがタップして新しいビューが表示されてから 1 秒以上の遅延が発生します。
残念ながら、裏で WebKit を使用しているため、これを別のスレッドに投げ込むことさえできません。Apple にバグを提出しましたが、回避策またはより良い実装方法についてのアイデアが必要です。
ビューでDidLoad:
self.labelOne.attributedText = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
documentAttributes:nil
error:&error];
簡単なサンプル プロジェクト: https://github.com/BenSS/AttributedStringTest
更新:
iOS9 では再び改善されているため、速度によって UI の操作が完全に損なわれることはありません。残念ながら、これはまだ iOS7 よりも高速ではありません。(デモで自分でテストしてください!)