這是一個觀察比什麼都重要,因爲我似乎有一個變通發現...[的UIDevice currentDevice] .orientation == UIDeviceOrientationUnknown以下的UINavigationController推動
下面的代碼無法工作當它在一個已被推入UINavigationController堆棧的控制器。在這種情況下,[UIDevice currentDevice].orientation
始終返回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;
}
以下調用已已取得:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
若要解決此UIDeviceOrientationUnknown
- 問題,我現在用下面的代替:
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsLandscape(orientation)) {
etc.
} else {
etc.
}
...它的工作原理每次。
不過,我不明白爲什麼第一個變體在推送視圖控制器的上下文中不起作用。想法任何人?它只是一個錯誤?
我有同樣的問題,但是我無法讓你的工作在我的情況下工作。 – Flea