top sizes icon guidelines bar iphone xcode debugging

iphone - sizes - ios top bar



iPhone: ¿es posible inspeccionar el marco de una UIView en el depurador de Xcode? (12)

Cuando el depurador se detiene en un punto de interrupción, no puedo encontrar el marco de ninguno de mis UIViews allí.

¿Es posible hacer esto?

EDITAR: comienza una recompensa debido a la falta de respuesta. Para que quede claro, lo que estoy buscando es una forma de ver el marco sin agregar un código de depuración adicional.

Además, si la respuesta es "no, no puedes hacerlo", la recompensa irá a la mejor explicación de por qué puedes ver a algunos miembros de la clase pero no a otros.


A veces están fuera de alcance en el momento en que llegas allí.

Imprimirlos en la consola:

NSLog(''Frame: %d, %d, %d, %d'', frame.origin.x, frame.origin.y, frame.size.width, frame.size.height);


Curiosamente, usar el método getter para devolver el marco de la vista funciona:

print (CGRect)[view frame]

Esto da el resultado esperado:

(CGRect) $2 = origin=(x=0, y=20) size=(width=320, height=48)

Pero si intentas utilizar la notación de puntos, que oigo tan a menudo se menciona simplemente como ''azúcar sintáctico'':

print (CGRect)view.frame

Obtiene el siguiente error:

error: C-style cast from ''<unknown type>'' to ''CGRect'' is not allowed


En XCode 5.1.1, puede pasar el puntero del ratón sobre una variable que es una UIView y verá el siguiente tipo de popover:

Si hace clic en el botón ''i'', se imprimirá el siguiente tipo de salida en la consola del depurador:

<UIImageView: 0xa49ca90; frame = (0 0; 640 360); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0xa46c1c0>>

Esta es otra forma de inspeccionar el marco de una UIView.


En Xcode, ve a la consola y escribe:

po viewName

Si la ejecución está dentro del código para la vista, solo puede:

po self

Esto generará algunos detalles de la vista, como este:

<UIView: 0x9cca0f0; frame = (0 0; 320 480); layer = <CALayer: 0x9ccabe0>>


Encontré una respuesta para lldb. Por ejemplo, esto funciona

(lldb) print (CGRect)[((UIView *)[[[self backIV] subviews] objectAtIndex:1]) frame]


Para obtener una información de marco similar al depurador como NSString, use NSStringFromCGRect (someView.frame)


Prefiero el formulario corto para imprimir, es decir, ''p'' para imprimir el marco en lldb. Por ej.

p (CGRect)[view frame]


Si va al panel del depurador, puede escribir esto mientras se encuentra en un punto de interrupción:

(gdb) print (CGRect) [self frame] $1 = { origin = { x = 0, y = 0 }, size = { width = 100, height = 100 } }

Al usar el depurador de la consola , puede presionar la tecla de flecha hacia arriba para desplazarse por los comandos anteriores. Al presionar regresar sin ingresar un comando, se repite el último comando.


Si, puedes hacerlo. Mientras realiza la depuración, encuentre la UIView de interés en el inspector de variables. Mantenga presionada la tecla Control y seleccione "Imprimir descripción en la consola". Por ejemplo, hice esto en _view ivar de un UIViewController y apareció lo siguiente en la consola:

Imprimir la descripción de _view:
<UIView: 0x25b460; frame = (0 0; 320 480); Autoresize = W + H; layer = <CALayer: 0x26b740 >>


Vuelva a formatear la respuesta de @ EPage_Ed porque el original estaba codificado para su caso específico:

En el indicador (lldb), escriba:

print (CGRect)[view frame]

O, para los límites:

print (CGRect)[view bounds]


NSLog(@"My view frame: %@", NSStringFromCGRect(myView.frame));


po [[[[UIApplication sharedApplication]windows] objectAtIndex:0] recursiveDescription]

imprimirá toda la vista heirachy pero solo parece funcionar en gdb y no en llvm