iphone - files - itunes
Atravesando la JerarquÃa de Vistas en el iPhone (0)
Esta es una rutina útil que puede usar en el iPhone para recorrer la jerarquía de vistas cuando desea saber qué se está creando y hacia dónde se dirige.
Esta rutina vuelca la jerarquía de vistas a NSLog comenzando en la vista pasada. Las subvistas muestran su índice en la matriz de subvistas y todas las superclases en orden separadas por dos puntos con el tamaño del cuadro al final.
Para volcar toda la jerarquía de vistas de su aplicación, llame al método de esta manera:
dumpViews([[UIApplication sharedApplication] keyWindow], @"", @"");
Para mostrar la jerarquía de la vista de la cámara, anule este método en su controlador:
navigationController:willShowViewController:viewController:animated
y llame a la rutina de volcado de esta manera:
dumpViews(self.modalViewController.view, @"", @"");
Para todos los demás puntos de vista:
dumpViews(myView, @"", @"");
Fuente
void dumpViews(UIView* view, NSString *text, NSString *indent)
{
Class cl = [view class];
NSString *classDescription = [cl description];
while ([cl superclass])
{
cl = [cl superclass];
classDescription = [classDescription stringByAppendingFormat:@":%@", [cl description]];
}
if ([text compare:@""] == NSOrderedSame)
NSLog(@"%@ %@", classDescription, NSStringFromCGRect(view.frame));
else
NSLog(@"%@ %@ %@", text, classDescription, NSStringFromCGRect(view.frame));
for (NSUInteger i = 0; i < [view.subviews count]; i++)
{
UIView *subView = [view.subviews objectAtIndex:i];
NSString *newIndent = [[NSString alloc] initWithFormat:@" %@", indent];
NSString *msg = [[NSString alloc] initWithFormat:@"%@%d:", newIndent, i];
dumpViews(subView, msg, newIndent);
[msg release];
[newIndent release];
}
}
Ejemplo de descarga de cámara
UIView:UIResponder:NSObject {{0, 0}, {320, 480}} 0: PLCameraView:UIView:UIResponder:NSObject {{0, 0}, {320, 480}} 0: UIView:UIResponder:NSObject {{0, 0}, {320, 427}} 1: UIImageView:UIView:UIResponder:NSObject {{10000, 10000}, {320, 480}} 2: UIView:UIResponder:NSObject {{0, 427}, {320, 53}} 3: PLCropOverlay:UIView:UIResponder:NSObject {{0, 0}, {320, 480}} 0: UIImageView:UIView:UIResponder:NSObject {{0, 20}, {320, 96}} 1: PLCropLCDLayer:UIView:UIResponder:NSObject {{0, 20}, {320, 96}} 2: TPBottomDualButtonBar:TPBottomButtonBar:TPBottomBar:UIView:UIResponder:NSObject {{0, 384}, {320, 96}} 0: TPPushButton:UIThreePartButton:UIPushButton:UIControl:UIView:UIResponder:NSObject {{22, 26}, {128, 47}} 1: TPCameraPushButton:TPPushButton:UIThreePartButton:UIPushButton:UIControl:UIView:UIResponder:NSObject {{170, 26}, {128, 47}} 0: UIImageView:UIView:UIResponder:NSObject {{51, 12}, {26, 19}}