2010-01-27 16 views
5

Tengo un UIViewController que se inicializa con un fotograma correcto, sin embargo, en algún lugar de mi código, el fotograma se destroza y tengo dificultades para saber dónde.¿Cómo detectar cuando un UIView ha cambiado de tamaño?

En situaciones como esta suele ser útil watch una variable en el depurador, pero no tengo forma de acceder a la propiedad controller-> view-> frame en mi vista variable, ya que no es una variable, es una propiedad (sorprendentemente)

Perforando en la UIView en la pantalla de variables muestra algunas cosas pero nada que pueda relacionar con el marco, pensé que quizás estaría en pero no lo es.

¿Hay alguna manera de ver los cambios en una API privada? Supongo que no, ya que las variables son esencialmente 'ocultas' y por lo tanto no se puede especificar exactamente qué watch.

Alternativamente, ¿qué otro enfoque podría utilizar? Ya intenté subclasificar UIView, estableciendo la vista de mi UIViewController para apuntar a esta subclase y romper el método setFrame, pero no pareció funcionar.

EDITAR: el método UIView de subclases DID funcionaba, solo tenía que establecer la vista para apuntar a mi subclase de prueba en viewDidLoad y no en el método init. Dejando esta pregunta abierta ya que no estoy seguro si esta es la mejor manera de abordar este tipo de problema ...

Respuesta

0

Puede crear un ivar, view2, y simplemente asignarlo a su vista en su método loadView. Eso debería permitirle verlo como una variable normal.

5

Subclase su la vista que desea realizar un seguimiento y volver a escribir el método setFrame:

@implementation MyTableView 

- (void)setFrame:(CGRect)frame; 
{ 
    NSLog(@"%@", frame); 
    [super setFrame:frame]; 
} 

@end 

continuación, utilizar el depurador para añadir un punto de interrupción a ella y comprobar cuando es llamado. Eventualmente, verá cuándo se cambia el marco y de dónde viene el cambio.

+0

sí ya he mencionado esto en la pregunta ... – Sam

+0

Sam, que debería funcionar. Si se cambia el marco, se debe llamar a este método. Si no es tal vez el problema está en otro lugar aguas arriba. –

+6

Esto no se puede llamar cuando se usan restricciones de diseño automático. – kpozin

Cuestiones relacionadas