web-dev-qa-db-fra.com

Comment inspecter la hiérarchie des vues dans iOS?

Existe-t-il un outil graphique permettant d'inspecter la hiérarchie de vues d'une application iOS? Je pense à l'inspecteur Web de Webkit ou à des outils similaires. Je cherche à résoudre les problèmes de mise en page, tels que les vues mal positionnées ou de taille incorrecte, ou qu'un enfant ne soit pas correctement contenu dans son parent. Actuellement, je dois ajouter des assertions qui testent manuellement ces différentes conditions, ou définissent différentes couleurs d'arrière-plan sur différentes vues, et comme vous pouvez l'imaginer, c'est une façon très fastidieuse de procéder.

J'ai consulté le UI recorder d'Instruments, mais celui-ci n'enregistre et ne lit que les actions de l'interface utilisateur et ne fonctionne en aucun cas pour les applications Mac.

Y a-t-il une meilleure solution?

157
Vaddadi Kartick

L'inspection de la hiérarchie des vues 3D est désormais intégrée à Xcode 6, comme Reveal App et Spark Inspector.

enter image description here

Cliquez sur le bouton "Hiérarchie des vues de débogage" lorsque votre application est en cours d'exécution pour suspendre l'exécution et inspecter les vues au moment actuel.

enter image description here

Plus d'infos sur Documentation Apple .

155
Levi McCallum

Je ne sais pas s'il existe un outil d'inspection de la vue dans l'interface graphique, mais j'ai eu un peu de chance avec la méthode de débogage sous UIView: -recursiveDescription

si vous mettez le programme en pause dans le débogueur et que vous le saisissez dans GDB (Edit: fonctionne également en LLDB)

po [[UIWindow keyWindow] récursiveDescription]

Vous obtenez une impression de la totalité de votre hiérarchie de vues. Vous pouvez également l'appeler sur une vue spécifique pour obtenir une impression de la hiérarchie des vues de cette vue.

Il peut être un peu fastidieux de parcourir les informations que vous en retirez, mais cela m’a été utile.

Le crédit va à cet article de blog qui a parlé de cette méthode et également lié à cette aide, mais plutôt difficile à trouver Apple Tech note .

259
Simon Goldeen

Reveal app screenshot

Curieusement, il existe maintenant une autre option, http://revealapp.com/ , qui à ce jour est en version bêta ouverte (gratuite). Comme vous pouvez le constater, c'est un autre inspecteur visuel.

EDIT 2014-04-05: Reveal est sorti de la bêta et n'est plus gratuit. Il y a cependant un essai de 30 jours.

46
livingtech

Cette question est ancienne mais permettez-moi de mettre ici les informations sur le nouvel outil que je développe: https://github.com/glock45/iOS-Hierarchy-Viewerenter image description here

34
Damian Kołakowski

enter image description here

Juste pour garder ce fil à jour, j'ai récemment joué avec Spark Inspector . Ce n'est pas gratuit, mais c'est très gentil.

17
livingtech

Le FLEX Debugger fournit un inspecteur de vue d'application qui vous permet de modifier l'interface utilisateur d'une application en cours d'exécution. Il enregistre également les demandes de réseau.

https://github.com/Flipboard/FLEX

 enter image description here

6
Scott Bossak

Gratuit: il suffit de taper ceci dans inspecteur:

po [[UIWindow keyWindow] recursiveDescription]

Commercial: http://revealapp.com/ J'ai testé la version bêta devevelapp, c'était bon mais il a des bugs . Un autre outil commercial: http://sparkinspector.com/ ça marche sans problème. .

6
AVEbrahimi

Swift 4.

iOS :

extension UIView {

   // Prints results of internal Apple API method `recursiveDescription` to console.
   public func dump() {
      Swift.print(perform(Selector(("recursiveDescription"))))
   }
}

macOS :

extension NSView {

   // Prints results of internal Apple API method `_subtreeDescription` to console.
   public func dump() {
      Swift.print(perform(Selector(("_subtreeDescription"))))
   }
}

Utilisation (dans le débogueur): po myView.dump()

5
Vlad

Cela vide tout dans la fenêtre de débogage. (Difficile à lire cependant) :( Travaillant sur iOS 10, Xcode 8.3.3 

po UIApplication.shared.keyWindow?.recursiveDescription()
2
Alix

Pour Swift/Xcode 10, entrez ceci dans la console de débogage:

po yourView.value(forKey: "recursiveDescription")!

Il affichera une hiérarchie récursive pour toute UIView donnée.

(Crédit: Comment déboguer votre hiérarchie de vues à l'aide de recursiveDescription )

0
Albert Bori