Ésta es una observación más que nada, porque parecen haber encontrado un trabajo en torno ...[UIDevice currentDevice] == .orientation UIDeviceOrientationUnknown siguiente UINavigationController empujar
El código siguiente no funciona cuando está en un controlador que se ha insertado en una pila UINavigationController. En esta situación, [UIDevice currentDevice].orientation
devuelve constantemente UIDeviceOrientationUnknown
.
-(void)layoutAccordingToOrientation {
UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
NSLog(@"layoutAccordingToOrientation/orientation==%i", orientation);
if (UIInterfaceOrientationIsLandscape(orientation)) {
:
_detailToolbar.frame = CGRectMake(0, 660, 1024, 44);
} else {
:
_detailToolbar.frame = CGRectMake(0, 916, 768, 44);
}
}
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[self layoutAccordingToOrientation];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
la siguiente llamada ha sido hecha:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
Para evitar este UIDeviceOrientationUnknown
-problema, ahora uso el siguiente lugar:
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsLandscape(orientation)) {
etc.
} else {
etc.
}
... que trabaja cada vez.
Aún así, no veo por qué la primera variación no funcionaría en el contexto de un controlador de vista presionado. ¿Ideas a alguien? ¿Es simplemente un error?
Estoy teniendo el mismo problema, sin embargo, no puedo hacer que su trabajo funcione en mi situación. – Flea