我使用这些suggested solutions为我的UINavigationBar提供了一个自定义图像。 (为了使它更明确:我在AppDelegate.m文件中向UINavigationBar添加了一个类别)。 到目前为止这个工作正常,我没有任何问题。然而,现在我在最近的iOS5测试版上运行我的应用程序。 UINavigationBar现在再次为空白。
由于我安装的所有其他应用程序(使用自定义图像)仍然表现相同,我的代码中必定存在“错误”,iOS5现在不再支持了。
所有人都知道我采用上述解决方案会出现什么问题?
我发现使其工作的唯一方法是创建UINavigationBar的真实子类,然后在所有视图中告诉IB使用该自定义类。虽然不那么优雅......
答案 0 :(得分:4)
要支持这两个版本,您需要询问是否存在setBackgroundImage:forBarMetrics:method。
答案 1 :(得分:1)
另一个可能的“hacky”解决方案是创建一个自定义视图并将其作为子视图插入UINavigationBar - 可能它仍然可以工作:
UIView *backgroundView = ...
[navigationBar insertSubview:backgroundView atIndex:0];
或者检查iOS5文档中更新的UINavigationBar类引用,以获取设置自定义背景的内置方法
答案 2 :(得分:1)
使用此代码
UIImage *backgroundImage = [UIImage imageNamed:@"strip.png"];
[upnavbar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];
这将有效。
答案 3 :(得分: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];
}