2011-06-14 105 views
4

我用这些suggested solutions给我的UINavigationBar一个自定义图像。 (为了使它更加明确:我在AppDelegate.m文件中向UINavigationBar添加了一个类别)。 到目前为止,这工作得很好,我没有任何问题。但是,现在我正在最近的iOS5测试版上运行我的应用程序。 UINavigationBar现在再次为空。UINavigationBar自定义背景图像

由于我安装的所有其他应用程序(使用自定义图像)仍然表现相同,所以我的代码中肯定有某些“错误”,我认为iOS5现在不再支持。

因此,有没有人有一个想法,我采用上述解决方案可能是什么问题?

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

+0

你有没有找到你要找的解决方案?据我所知,iOS5需要使用setBackgroundImage:forBarMetrics:,但是你仍然可以在AppDelegate中的类别中使用它吗?我发现的所有解决方案都要求我为每个ViewController添加一些东西来支持iOS5,这正是我首先想要避免的。 – djibouti33 2011-10-19 06:00:12

+0

从迄今为止的所有回复看来,似乎并没有像iOS 5那样的唯一一个解决方案。因此,我认为实现这一目标的唯一方法是将所有ViewController不是直接从UIViewController,而是从你自己的那个实现setBackgroundImage:forBarMetrics:默认情况下... – Dennis 2011-10-19 13:58:51

+0

看看这里使用新的iOS5 API的UINavigationBar的[setBackgroundImage:forBarMetrics:](http:// stackoverflow。 com/questions/6283534/custom-background-image-on-uitoolbar -in-ios5-sdk/6343732#6343732) – loretoparisi 2011-06-14 13:00:39

回答

1

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

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

或检查更新iOS5文档中的UINavigationBar类参考设置自定义背景的内置方法

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]; 

    } 
+0

这会隐藏后退按钮,以便在离开视图并返回视图时进行导航。 – 2012-02-24 20:11:10

1

使用此代码

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

这个WIL工作。

+1

如果您可以在两个问题上发布相同的答案,请考虑将它们标记为重复。 – ChrisF 2013-03-16 11:09:40