En this ejemplo.Animar un marco UIView, subvista UIScrollView no siempre anima
Estoy animando el marco de PhotoViewerViewController cuando animo el tabBarController (para el efecto de pantalla completa). El PhotoViewer utiliza un uiscrollview para generar el mismo tipo de efecto que la aplicación de fotos de Apple. Por alguna razón, a veces se anima junto con mi fotograma PhotoViewer, y a veces no lo hace.
Puede ver que en el primer ejemplo salta al aumentar el tamaño del cuadro, pero se anima mucho cuando se reduce el tamaño del cuadro (y se restaura la barra de pestañas).
Sin embargo, en el ejemplo this cuando la foto es vertical, salta en ambas direcciones.
En ambos casos, si amplío la foto en absoluto con la vista de desplazamiento, se anima correctamente en ambas direcciones.
Sé que la evidencia está ahí, pero no puedo decir lo que está sucediendo aquí.
Aquí es mi bloque de animación:
void (^updateProperties) (void) =^{
self.navigationController.navigationBar.alpha = hidden ? 0.0f : 1.0f;
self.navigationController.toolbar.alpha = hidden ? 0.0f : 1.0f;
if (self.tabBarController) {
int height = self.tabBarController.tabBar.bounds.size.height;
for(UIView *view in self.tabBarController.view.subviews)
{
int newHeight;
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (UIInterfaceOrientationIsPortrait(orientation)) {
newHeight = hidden ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.height - height;
} else {
newHeight = hidden ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.width - height;
}
if([view isKindOfClass:[UITabBar class]])
{
[view setFrame:CGRectMake(view.frame.origin.x, newHeight, view.frame.size.width, view.frame.size.height)];
}
else
{
CGRect newFrame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, newHeight);
[view setFrame:newFrame];
// update our VC frame with animation
[self.view setFrame:newFrame];
}
}
}
};
Código adaptado de un mensaje el SO: UITabBar wont hide
fuente completo en github.
Gracias. Este último no funcionó, pero voy a intentarlo. –
Aunque aún no lo he resuelto, creo que me ha señalado en la dirección correcta. No estoy seguro de si esta transformación en particular se está activando en la propia PhotoImageView, o en el desplazamiento que la contiene. –
Personalmente movería toda la lógica para centrar el contenido de la vista de desplazamiento a la subclase scrollview. Allí, puede anular -setContentOffset: para realizar el diseño en lugar de utilizar los métodos de delegado de zoom. – hatfinch