4

我使用这些建议的解决方案为我的 UINavigationBar 提供了一个自定义图像。(为了更明确:我在 AppDelegate.m 文件中向 UINavigationBar 添加了一个类别)。到目前为止,这工作得很好,我没有任何问题。然而,现在我在最近的 iOS5 测试版上运行我的应用程序。UINavigationBar 现在又是空白的。

由于我安装的所有其他使用自定义图像的应用程序的行为仍然相同,我猜我的代码中一定存在“错误”,iOS5 现在不再支持。

那么有人知道我采用上述解决方案可能会出现什么问题吗?

我发现使它工作的唯一方法是创建一个真正的 UINavigationBar 子类,然后在所有视图中告诉 IB 使用该自定义类。虽然没有那么优雅...

4

4 回答 4

4

要支持这两个版本,您需要询问是否有 setBackgroundImage:forBarMetrics: 方法。

看看我的博文: http ://www.mladjanantic.com/setting-custom-background-for-uinavigationbar-what-will-work-on-ios5-and-ios4-too/

于 2011-10-15T19:49:45.753 回答
1

另一种可能的“hacky”解决方案是创建一个自定义视图并将其作为子视图插入 UINavigationBar - 可能它仍然可以工作:

UIView *backgroundView = ...
[navigationBar insertSubview:backgroundView atIndex:0];

或者查看 iOS5 文档中更新的 UINavigationBar 类参考,了解设置自定义背景的内置方法

于 2011-06-14T09:32:36.453 回答
1

使用此代码

        UIImage *backgroundImage = [UIImage imageNamed:@"strip.png"];
        [upnavbar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];

这会奏效。

于 2013-03-16T07:35:35.270 回答
0

这对我的工具栏有用

//toolBar background image set based on iOS version
    [[UIDevice currentDevice] systemVersion];

    if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) {

        //iOS 5
        UIImage *toolBarIMG = [UIImage imageNamed: @"toolBar_brown.png"];  

        if ([toolBar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) { 
            [toolBar setBackgroundImage:toolBarIMG forToolbarPosition:0 barMetrics:0]; 
        }

    } else {

        //iOS 4
        [toolBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"toolBar_brown.png"]] autorelease] atIndex:0]; 

    }
于 2011-10-15T22:53:04.083 回答