UINavigationBar背景图像不随旋转而改变

时间:2012-04-30 12:58:39

标签: iphone ios uiimage uiappearance

我正在尝试使用iOS 5中的外观方法使用背景图像。我正在使用以下语句设置背景图像:

UIImage *portraitImage = [UIImage imageNamed:@"test_bar_portrait.png"];
UIImage *landscapeImage = [UIImage imageNamed:@"test_bar_landscape.png"];
[[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:landscapeImage forBarMetrics:UIBarMetricsLandscapePhone];

当我运行应用程序时,正确的图像以纵向和横向显示,但当我旋转回肖像时,它仍然显示了横向图像。

我在这里创建了一个示例测试应用程序: http://dl.dropbox.com/u/7834263/Appearance%20Test.zip

正在发生的事情的屏幕截图:

normal portrait

normal landscape

incorrect portrait

2 个答案:

答案 0 :(得分:6)

我尝试将您的代码更改为以下&它对我来说很好。

UIImage *portraitImage = [UIImage imageNamed:@"test_bar_portrait.png"];
UIImage *landscapeImage = [UIImage imageNamed:@"test_bar_landscape.png"];
[[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:landscapeImage forBarMetrics:UIBarMetricsLandscapePhone];

self.navigationController.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;

请检查出来。

答案 1 :(得分:0)

Swift 2.0:

let portraitImage: UIImage = UIImage(named: "Navbar.portrait.png")!
let landscapeImage: UIImage = UIImage(named: "Navbar.landscape.png")!
UINavigationBar.appearance().setBackgroundImage(portraitImage, forBarMetrics: .Default)
UINavigationBar.appearance().setBackgroundImage(landscapeImage, forBarMetrics: .CompactPrompt)
self.navigationController!.navigationBar.autoresizingMask = .FlexibleTopMargin