In iOS 8 (e 8.1 beta) le prestazioni di creazione di una stringa NSAttributo sono molto peggiori di 7 (2-3x). Ciò è particolarmente evidente se si utilizzano più istanze sulla stessa vista, il caricamento di 4 etichette diverse causerà un ritardo di oltre un secondo da quando l'utente tocca e viene visualizzata la nuova vista.NSAttributoLe prestazioni della stringa peggiorano con iOS 8
Sfortunatamente non si può nemmeno lanciare questo in un altro thread, poiché utilizza WebKit dietro le quinte. Ho inviato un bug ad Apple, ma ho bisogno di idee su soluzioni alternative o un approccio di implementazione migliore.
In viewDidLoad:
self.labelOne.attributedText = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
documentAttributes:nil
error:&error];
rapida progetto di esempio: https://github.com/BenSS/AttributedStringTest
UPDATE:
iOS9 migliora le cose ancora una volta, quindi la velocità non è completamente paralizzante l'interazione utente. Sfortunatamente non è ancora veloce come in iOS7. (testalo tu stesso con la demo!)
E 'ridicolo che abbiano perso le scarse prestazioni di questo sotto gli 8 visto che andava bene fino a 7. Grazie per il suggerimento di DTCoreText, poiché questo è un buon punto fermo anche per le nostre esigenze. – Ben
Lo so, penso che i ragazzi di Apple siano stati spinti incredibilmente per iOS 8 e hanno rilasciato un sacco di ottime API ma purtroppo alcune cose sono state trascurate. Data l'importanza attribuita al kit di testo, possiamo solo sperare che questo venga risolto con iOS 9 –
@DanielGalasko Qualche idea se lo fosse? –