当方向从横向更改为纵向时,UInavigationbar背景图像无法正确调整大小

时间:2013-04-22 12:10:36

标签: iphone ios ios5 uinavigationbar

我正在尝试为纵向和横向设置uinavigationbar的背景图像。我使用以下代码:

UIImage *navbarImage = [[UIImage imageNamed:@"navbar"]
                            resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9.0, 0, 9.0)];
UIImage *navbarLandscapeImage = [[UIImage imageNamed:@"navbar-landscape"]
                                 resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9.0, 0, 9.0)];
[[UINavigationBar appearance] setBackgroundImage:navbarImage
                                   forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:navbarLandscapeImage
                                   forBarMetrics:UIBarMetricsLandscapePhone];

但是,在iOS5.1模拟器中,当我将方向从纵向更改为横向更改为纵向时,使用的图像是navbar-landscape.png而不是navbar.png。

以下是一些示例图片:

人像默认: enter image description here

更改为横向: enter image description here

改回肖像: enter image description here

有谁知道这里的问题是什么?我不确定为什么错误的图像被使用。

4 个答案:

答案 0 :(得分:1)

实际上,事实证明问题是模拟器中的一个错误。我尝试了上面描述的所有解决方案,并且没有任何问题在问题得到解决时有所不同。

答案 1 :(得分:0)

你在哪里设置这个?您可以尝试将其添加到 - (void)viewWillLayoutSubviews。

答案 2 :(得分:0)

你可以给一个风景和potrait的图像,不需要两个不同 两个不同的图像 而不是像这样给予UIEdgeinset

UIImage *navbarImage = [[UIImage imageNamed:@"navbar"]
                        resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9.0, 0, 9.0)];

你可以指定顶部和底部插图,以便它可以调整高度

UIImage *navbarImage = [[UIImage imageNamed:@"navbar"]
                        resizableImageWithCapInsets:UIEdgeInsetsMake(some value according the image u have, 9.0, some value according the image u have, 9.0)];

答案 3 :(得分:-1)

在纵向模式下:UINavigationBar Height = 44。

在横向模式下:UInavigationbar Height = 32

如果您希望它们相同,则需要考虑它们的高度。例如:

- (void)viewWillAppear:(BOOL)animated {
    CGRect navframe = [[self.navigationController navigationBar] frame];
    navframe.size.height = 44.0f;
    [self.navigationController navigationBar].frame = navframe;
}