清除iPhone导航栏图像

时间:2011-03-22 19:44:20

标签: iphone ios4 uinavigationcontroller uinavigationbar eventkit

我目前在App Delegate中使用此代码为导航栏设置自定义背景图像:

@implementation UINavigationBar (CustomImage)
   - (void)drawRect:(CGRect)rect {
      UIImage *image = [UIImage imageNamed: @"MyNavigationBar.png"];
      [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
   }
@end   

效果很好,对于我的应用程序中的所有视图,我将导航栏标题设置为不显示文本(因此它不会掩盖背景图像)。

其中一个视图提供了一个模态视图控制器(确切地说是一个EKEventEditViewController),导航栏中的标题显示“添加事件”,它显示在我的自定义图像之上。

我尝试了几种方法来更改标题(无效),但宁愿阻止自定义导航栏背景图像仅在此模态视图中显示。

有没有人知道如何使用所述方法设置导航栏背景图像?

1 个答案:

答案 0 :(得分:4)

拜托,永远不要这样做......

您正在替换UINavigationBar中的drawRect:方法,非常脆弱,可能会导致您(以及您的用户)头痛。

您的背景将始终显示在UINavigationBar的所有实例中,因为您已经替换了drawRect的实现:

无法替换EKEventEditViewController的标题。当然总有一种方法,但它甚至比替换drawRect的实现更糟糕:

相反,请创建UINavigationBar的子类,并在需要自定义导航栏的位置使用它。