Questa è un'osservazione più che altro, perché mi sembra di aver trovato un work-around ...[UIDevice currentDevice] .orientation == UIDeviceOrientationUnknown seguente UINavigationController spingere
Il codice qui sotto non funziona quando è in un controller che è stato inserito in uno stack UINavigationController. In questa situazione [UIDevice currentDevice].orientation
restituisce costantemente 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 seguente chiamata è stato fatto:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
Per aggirare il UIDeviceOrientationUnknown
-problema, io uso il seguente invece:
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsLandscape(orientation)) {
etc.
} else {
etc.
}
... che funziona ogni volta.
Ancora, non riesco a capire perché la prima variante non funzionerebbe nel contesto di un controller di visualizzazione spinto. Idee a qualcuno? È semplicemente un insetto?
Ho lo stesso problema, tuttavia non sono in grado di far funzionare il lavoro anche nella mia situazione. – Flea