¿Cómo inspecciono la jerarquía de la vista en iOS?

¿Hay alguna herramienta de GUI que inspeccione la jerarquía de vista de una aplicación de iOS? Estoy pensando en el inspector web de Webkit o herramientas similares. Estoy tratando de depurar los problemas de layout, como las vistas que tienen la position o el tamaño incorrectos, o un niño que no está correctamente contenido en su padre. Actualmente tengo que añadir afirmaciones que testingn estas diversas condiciones a mano, o establecer diferentes colors de background en diferentes vistas, y como puedes imaginar, esa es una manera realmente tediosa de hacerlo.

Miré la UI recorder de Instruments, pero solo registra y reproduce las acciones de la interfaz de usuario y, en cualquier caso, solo funciona para aplicaciones de Mac.

¿Hay una mejor solución?

Xcode 6 ahora tiene una inspección de jerarquía de vista 3D incorporada como la aplicación reveladora y el inspector de chispa.

introduzca la descripción de la imagen aquí

Haga clic en el button "Depurar jerarquía de vista" mientras su aplicación se está ejecutando para detener la ejecución e inspeccionar las vistas en el momento actual.

introduzca la descripción de la imagen aquí

Más información en la documentation de Apple .

No sé si hay una herramienta de inspección de vista GUI, pero tuve suerte con el método de debugging en UIView: -recursiveDescription

si detiene el progtwig en el depurador e ingresa esto en GDB (Edit: también funciona en LLDB)

po [[UIWindow keyWindow] recursiveDescription]

Obtiene una copy impresa de toda su jerarquía de vistas. También puede llamarlo en una vista específica para get una copy impresa de la jerarquía de vista de esa vista.

Puede ser un poco tedioso vadear la información que obtienes, pero me ha resultado útil.

El crédito va a esta publicación de blog que habló sobre este método y también está relacionado con esta útil, pero bastante difícil de encontrar, la nota de Apple .

Mostrar captura de pantalla de la aplicación

Por extraño que parezca, ahora hay otra opción, http://revealapp.com/ , que a partir de esta publicación está en una beta abierta (gratuita). Como puedes ver, es otro inspector visual.

EDIT 05-04-2014: Revelar está fuera de Beta y ya no es gratis. Sin embargo, hay una testing de 30 días.

Esta pregunta es antigua pero permítame poner información aquí sobre la nueva herramienta que desarrollo: https://github.com/glock45/iOS-Hierarchy-Viewer introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Solo para mantener este hilo actualizado, he estado jugando recientemente con Spark Inspector . No es gratis, pero es muy agradable.

Gratis: solo escribe esto en el inspector:

 po [[UIWindow keyWindow] recursiveDescription] 

Comercial: http://revealapp.com/ Probé versión beta de revealapp, fue bueno aunque tiene errores. Otra herramienta comercial: http://sparkinspector.com/ funciona sin problemas.

FLEX Debugger proporciona un inspector de vista de aplicaciones que le permite modificar la interfaz de usuario en una aplicación en ejecución. También registra las requestes de networking.

https://github.com/Flipboard/FLEX

introduzca la descripción de la imagen aquí

Esto vuelca todo en la window de debugging. (Difícil de leer) 🙁 Trabajando en iOS 10, Xcode 8.3.3

 po UIApplication.shanetworking.keyWindow?.recursiveDescription() 

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")))) } } 

Uso (en depurador): po myView.dump()

La respuesta aprobada ya no funciona para mí, usando Xcode 8 y Swift 2.3. Esto es lo que funciona para mí:

po UIApplication.shanetworkingApplication().keyWindow?.recursiveDescription()