0

我正在尝试为纵向和横向设置 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。

以下是一些示例图像:

纵向默认: 在此处输入图像描述

更改为横向: 在此处输入图像描述

改回纵向: 在此处输入图像描述

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

4

4 回答 4

1

实际上,事实证明问题是模拟器中的错误。我尝试了上述所有解决方案,但没有一个对问题何时得到解决产生影响。

于 2013-06-26T16:47:11.740 回答
0

您可以只为风景和肖像提供一张图像,而无需拥有两个不同的两个不同图像,而不是像这样提供 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)];
于 2013-04-22T14:03:09.357 回答
0

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

于 2013-04-22T12:30:46.143 回答
-1

在纵向模式下:UINavigationBar 高度 = 44。

在横向模式下:UInavigationbar 高度 = 32

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

- (void)viewWillAppear:(BOOL)animated {
    CGRect navframe = [[self.navigationController navigationBar] frame];
    navframe.size.height = 44.0f;
    [self.navigationController navigationBar].frame = navframe;
}
于 2013-04-22T12:30:46.253 回答