ios cocoa uiimageview hidden quartz-graphics

ios - ¿Por qué UIImageView se oculta solo después de la demora?



cocoa hidden (1)

El cambio .hidden = true no se hará visible hasta que la ruta de ejecución regrese al runloop principal. Es probable que la segunda línea bloquee durante unos segundos, impidiendo que se produzcan estos cambios (o drawRect tarda mucho tiempo más en llegar a la tubería).

La solución más simple sería posponer la segunda línea hasta la siguiente iteración de runloop:

self.vignetteView.hidden = YES; // defer execution so the above changes are immediately visible [[NSOperationQueue mainQueue] addOperationWithBlock:^{ lupeItself = [[LoupeView alloc] initWithView:_pageView setZoomImageName:_zoomPageImageName setDelegate:self]; }];

Además, un punto menor: debe usar las constantes YES y NO para las propiedades y argumentos BOOL , en lugar de true y false .

Después de que se toca un UIView, lo oculto e inicializo un nuevo objeto con UIView y Quartz drawRect.

- (void)viewTapped:(UITapGestureRecognizer *)recognizer { self.vignetteView.hidden=true; lupeItself = [[LoupeView alloc] initWithView:_pageView setZoomImageName:_zoomPageImageName setDelegate:self]; }

El código anterior oculta el UImageView solo después de unos 2 segundos de retraso. Pero si se elimina la última línea (LoupeView alloc etc.), se oculta instantáneamente. ¿Por qué? ¿Cómo hacer que la vista se oculte al instante?