如何在navigationBarHidden = NO时修复“空白”区域

时间:2009-06-10 21:05:44

标签: iphone user-interface

我正在旋转类似于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];

1 个答案:

答案 0 :(得分:1)

我在http://www.iphonedevsdk.com/forum/iphone-sdk-development/3262-horrible-drawing-after-hiding-navigationbar.html

中找到了一个半修复程序

这是相关代码:

- (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];
}

}

然而,如果出现导航栏,则会再次发生混乱。