magicwand

Lorsque les UIViews disparaissent soudainement

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.

Xcode View Debugger

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 !

1 Etoile2 Etoiles3 Etoiles4 Etoiles5 Etoiles (1 votes, average: 5,00 out of 5)
Loading...
Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPin on PinterestShare on RedditDigg this

Aucun commentaire

Time limit is exhausted. Please reload CAPTCHA.