J'ai une classe qui travail est d'analyser un texte en plusieurs pages. J'utilise sizeWithFont: méthode pour identifier quand une page se termine et une autre commence. Malheureusement, étant donné que la quantité de texte à analyser est assez importante, toute l'opération doit être effectuée sur un thread d'arrière-plan (cela prend plusieurs secondes). Et donc parfois je reçois des artefacts visuels sur mon interface (UIKit n'est pas thread-safe mais je l'appelle de plusieurs threads simultanément), dont j'aimerais me débarrasser.Alternative pour sizeWithFont: méthode
Je dois me débarrasser de l'utilisation de sizeWithFont: sur le thread d'arrière-plan. Mais il ne semble pas y avoir d'alternative pour cette méthode. La seule façon de connaître la largeur du texte avec Core Graphics est d'utiliser la méthode indiquée dans la documentation de la pomme:
- Appelez la fonction CGContextGetTextPosition pour obtenir la position de texte actuel.
- Définissez le mode de dessin de texte sur kCGTextInvisible à l'aide de la fonction CGContextSetTextDrawingMode.
- Dessinez le texte en appelant la fonction CGContextShowText pour dessiner le texte à la position de texte actuelle.
- Déterminez la position de texte finale en appelant la fonction CGContextGetTextPosition.
- Soustrayez la position de départ de la position finale pour déterminer la largeur du texte.
Mais je suis vraiment inquiet que cela conduise à une énorme perte de performance.
Quelqu'un connaît un autre moyen de connaître la largeur du texte?