Under iOS 8 (and 8.1 beta) the performance of creating an NSAttributedString is much worse than 7 (2-3x). This is especially noticeable if you're using multiple instances on the same view, loading 4 different labels will cause a delay of over a second from when the user taps and the new view appears.
Unfortunately you can't even throw this into another thread, since it uses WebKit behind the scenes. I have submitted a bug to Apple, but I need ideas on workarounds or a better implementation approach.
In viewDidLoad:
self.labelOne.attributedText = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
documentAttributes:nil
error:&error];
Quick sample project: https://github.com/BenSS/AttributedStringTest
UPDATE:
iOS9 improves things again, so the speed isn't completely crippling the UI interaction. Unfortunately it's still not as fast as this was under iOS7. (test it yourself with the demo!)