J'ai demandé à l'origine this question. J'avais supposé que la raison pour le temps de chargement lent de ma vue personnalisée était en raison de la superposition de plusieurs vues les unes sur les autres ou peut-être à cause de certains recursion problem. Cependant, après avoir coupé le code de plus en plus pour voir ce qui ferait une différence, il s'agissait de savoir si j'avais un UITextView
présent ou non. Parce que la source apparente de mon problème est si différente de ce à quoi je m'attendais dans ma première question, j'ai décidé de commencer une nouvelle question plutôt que d'ajouter une longue mise à jour à l'ancienne.Temps de chargement lent pour UIView personnalisé avec propriété UITextView dans Swift
J'ai configuré mon projet de test avec deux contrôleurs de vue. Un bouton sur le premier contrôleur d'affichage appelle une séquence d'affichage au second contrôleur d'affichage. Le deuxième contrôleur de vue a ma vue personnalisée dessus. (En utilisant le second contrôleur de vue me laisser un sentiment de combien de temps il a fallu pour charger la vue personnalisée.)
code de la vue personnalisée:
import UIKit
@IBDesignable class UIMongolTextView: UIView {
var textView = UITextView() // key line
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect){
super.init(frame: frame)
}
}
Comme vous pouvez le voir, la seule différence par rapport à un UIView
est que j'ai ajouté une propriété UITextView
. Et c'est cette vue personnalisée qui se charge très lentement. Exécution de l'outil Les allocations d'instruments que je reçois les résultats suivants (un nombre de 997):
Cependant, si je commente la ligne
//var textView = UITextView()
je les charges de vues personnalisées très rapidement et ne dispose que d'un nombre de 7.
que se passe ici? Est-il possible d'utiliser une propriété UITextView
dans une vue personnalisée et d'éviter ce temps de chargement lent?
J'ai le même problème, mais j'utilise un UIPageViewController, et il y a un décalage lorsque je tente de passer à la page suivante parce que l'affichage du texte prend du temps pour init. – Jacob
Note à moi-même (pour essayer plus tard): Que se passe-t-il si je le déclare comme un 'UIView', puis le transtyper dans un' UITextView' plus tard? – Suragch