iphone - Obtener el marco correcto dentro willRotateToInterfaceOrientation
layout rotation (2)
Mis subvistas tienen un diseño diferente cuando están en orientación vertical y horizontal. El diseño se basa en el marco de la supervista, y no es trivial (no se puede lograr utilizando resortes y puntales de ajuste automático).
El problema es que si estoy cambiando el marco de las subViews durante willRotateToInterfaceOrientation, la animación es correcta, pero el marco es el superView sigue siendo el marco de la orientación anterior.
Si estoy cambiando las subViews durante didRotateFromInterfaceOrientation, el marco es el superView, de hecho es el correcto, pero el cambio de marco solo ocurre después de la animación giratoria y no se ve bien.
¿Cuál es la forma correcta de cambiar los marcos de las subViews al cambiar de orientación?
Creo que puedes intentar reemplazar las layoutSubviews
. Allí puede diseñar las subvistas de acuerdo con la orientación actual, sin preocuparse por will / did RotateFromInterfaceOrientation. Se llama a layoutSubviews
cada vez que se presentan las vistas. Esto te ayudará a sincronizar los cambios de tu fotograma con la animación.
HTH,
Akshay
Esta función funciona para lo que necesita porque el marco de vistas ha cambiado desde la rotación y no detiene la animación personalizada.
-(void)willAnimateRotationToInterfaceOrientation (UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
float width = UIInterfaceOrientationIsPortrait(toInterfaceOrientation) ? [[UIScreen mainScreen] applicationFrame].size.width : [[UIScreen mainScreen] applicationFrame].size.height;
//do something with the width now
//or you can get the height the same way
}