3

我有一个以 root 开头的应用程序UINavigationController。然后这个控制器推动和弹出各种其他UIViewControllers的 - 一切正常。

我的应用程序有一个自定义图形navigationController.navigationBar.backgroundImage。iPhone 平台有一张图片。iPad 平台有两张图片——一张是纵向的,一张是横向的。iPad 是旋转的平台,iPhone 平台是纵向的。

如果平台是 iPad,我已经编写了代码-(void)willRotateToInterfaceOrientation:来检测旋转,并将其设置navigationBar.backgroundImage为正确的方向图形。

在 iPad 5.0 模拟器中 - 它工作正常;无论方向如何,在屏幕上旋转 iPad 都会产生正确的导航栏图形。

在设备上 - 它不起作用- 图形在 iPad 设备纵向启动时正确显示。当我旋转到横向时,导航栏变为标准的灰色导航栏。当我转回灰色的“棍子”时。

我试过打电话setNeedsDisplay- 没有变化。

我试过设置navigationBar.tintColor = [UIColor clearColor]- 没有变化。

我检查了代码中图形的文件名是否与实际文件名相同 - 它们是。

旋转代码:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    return YES; }
return (interfaceOrientation == UIInterfaceOrientationPortrait);

}

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        UIImage *titleImage = [UIImage imageNamed:@"StandardHeaderIpadLandscape"];
        self.navigationController.navigationBar.tintColor = [UIColor clearColor];
        [self.navigationController.navigationBar setBackgroundImage:titleImage forBarMetrics:UIBarMetricsDefault];
        self.navigationController.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"StandardBackgroundiPadLandscape.png"]];
        [self.navigationController.navigationBar setNeedsDisplay];
    } else {
        UIImage *titleImage = [UIImage imageNamed:@"StandardHeaderIpadPortrait"];
         self.navigationController.navigationBar.tintColor = [UIColor clearColor];
        [self.navigationController.navigationBar setBackgroundImage:titleImage forBarMetrics:UIBarMetricsDefault];
        self.navigationController.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"StandardBackgroundiPad.png"]];
        [self.navigationController.navigationBar setNeedsDisplay];
    }
}

}

4

1 回答 1

1

检查是否titleImage为 nil。我感觉您的图像路径不正确,或者这些图像没有正确复制到 iPad。

于 2012-01-07T15:32:24.280 回答