Fading UIView permite ver las subvistas

Tengo un UIScrollView que contiene varios subviews (UIImageViews, UILabels y UIViews estándar). Algunas de las UIImageViews están parcialmente cubiertas por otras UIViews.

Sin embargo, cuando desvanezco el UIScrollView, las partes parcialmente cubiertas de UIImageViews se exponen durante el breve momento de la animation.

Quiero poder desvanecer la vista de desplazamiento y todo su contenido al mismo time en la misma animation, es decir, no revelar ninguna de las imágenes parcialmente cubiertas.

Si no es posible, siempre puedo agregar una UIView encima de todos los demás controles y desvanecerlo desde alfa 0 hasta 1 para ocultar todo, pero estoy seguro de que hay una manera de realizar un desvanecimiento completo en una vista y todo lo que se subestima .

He intentado esto:

[UIView beginAnimations:nil context:NULL]; [scrollViewResults setAlpha:0.0f]; [UIView commitAnimations]; 

Y he intentado esto:

 - (IBAction)questionGroupChanged:(UIButton*)sender { [UIView beginAnimations:nil context:NULL]; [self fadeViewHierarchy:scrollViewResults toAlpha:0.0f]; [UIView commitAnimations]; } - (void)fadeViewHierarchy:(UIView*)parentView toAlpha:(float)alpha { [parentView setAlpha:alpha]; for (UIView *subView in parentView.subviews) { [self fadeViewHierarchy:subView toAlpha:alpha]; } } 

Pero aún no lo he desencryption. ¿Algunas ideas?

Esto sucede debido a la forma en que funciona el compositor. Debe habilitar la rasterización en la capa de la vista al desvanecerla:

 view.layer.shouldRasterize = YES; 

Probablemente solo debas habilitar esto durante la duración de la animation, ya que requerirá más time de procesamiento de memory y charts.

La respuesta de Mike es la correcta y se merece todo el crédito por esto. Solo para ilustrar, podría parecer:

 - (void)fadeView:(UIView*)view toAlpha:(CGFloat)alpha { view.layer.shouldRasterize = YES; [UIView animateWithDuration:0.75 animations:^{ view.alpha = alpha; } completion:^(BOOL finished){ view.layer.shouldRasterize = NO; }]; } 

Por lo tanto, al usar scrollViewResults , se scrollViewResults como:

 [self fadeView:scrollViewResults toAlpha:0.0f]; 

¿Has intentado con los methods de class de UIView + animateWithDuration: * (disponible en iOS 4 y +)

Me gusta :

 - (void)fadeAllViews { [UIView animateWithDuration:2 animations:^{ for (UIView *view in allViewsToFade) view.alpha = 0.0; } completion:^(BOOL finished){} ]; }