Aujourd’hui nous allons partager avec vous une astuce de littlebitesofcocoa sur élucider des phénomènes étranges et surnaturels : la combustion spontanée des UIViews
ou plus exactement leurs disparitions soudaines.
Mettons nous en situations. Nous sommes entrain de composer une UIView. Nous la personnalisons, la configurons aussi et nous compilons le code pour tester au plus vite. Et là c’est le drame ! Un espace vide, rien du tout à l’endroit où la vue devrait s’afficher !
Comment faire ? Voici quelques astuces pratiques pour résoudre ce problème :
Avec des outils
Le premier réflexe que vous devriez avoir c’est d’inspecter la vue à l’aide du View Debugger de Xcode. Où mieux si vous avez, ouvrir Reveal.app qui est une solution tierce et surtout payante.
En code
Si vous souhaitez inspecter la hiérarchie des vues par code au lieu d’utiliser des outils graphiques, Vous pouvez commencer par écrire ceci :
print(UIApplication.sharedApplication().keyWindow?.performSelector("recursiveDescription"))
Dans cet example nous faisons appel à une fonction privé (donc à ne surtout pas utiliser en production sous peine de voir son application rejetée de l’AppStore) recursiveDescription
pour afficher sur la console d’Xcode l’arborescence des vues. La plupart du temps la phase de debug s’arrête ici car les problèmes d’Auto Layout cassés ou de vue absente peuvent être détectés avec ces méthodes.
Néanmoins si vous êtes toujours bloqués, voici d’autres astuces pour vérifié la conformité de votre code :
- Est ce que vos vues sont cachés (
hidden = true
) ? - Sont elles transparentes (
alpha = 0
) ? - Sont elles masqués par un
maskLayer
? - Ont elles des frames à
CGRect.zero
? - Est ce que l’
UIWindow
a une taille bizarre ou a t’elle été déplacée ?
Vous pouvez aussi essayer de mettre de couleurs spécifiques très moche afin de voir les choses plus facilement.
- Est qu’une autre vue est par dessus la votre ?
- Est ce que la propriété
clipsToBounds
est activée et par conséquent une frame inappropriée coupe la vue ?
Si tous ces tests échouent essayer de mettre des commentaires pour vérifier que votre vue est bien initialisé et que tout se passe correctement.
Bonne chasse !