我正在旋转类似于iTunes应用的视图。在肖像是一个tableview,在landscape中是照片查看器。
当我从横向返回到肖像时,我尝试恢复导航栏,但却得到一个扭曲的桌面视图,而没有导航栏。
这就是我的所作所为:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration {
BOOL restoreNav = NO;
if ((toInterfaceOrientation == UIInterfaceOrientationPortrait) ||
(toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)) {
[self inPortrait];
restoreNav = YES;
} else {
[self inLandscape];
}
if (self.landscape)
{
if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
{
self.view = self.portrait;
}
else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)
{
self.view = self.landscape;
}
else if (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
{
self.view = self.portrait;
}
else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
self.view = self.landscape;
}
[[self.navigationController view] setFrame: [[UIScreen mainScreen] bounds]];
} else {
self.navigationController.navigationBarHidden = NO;
}
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
答案 0 :(得分:1)
这是相关代码:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
//total hack - to fix the bug where the screen layout is shagged if the device orientation
//is changed when the navigation is hidden
if ([self.navigationController isNavigationBarHidden])
{
[self.navigationController setNavigationBarHidden:NO animated:NO];
[self.navigationController setNavigationBarHidden:TRUE animated:NO];
}
}
然而,如果出现导航栏,则会再次发生混乱。