1

我目前在我的 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),并且导航栏中的标题显示为“添加事件”,它显示在我的自定义图像之上。

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

有谁知道在仍然使用所述方法设置导航栏背景图像的同时执行此操作的方法?

4

1 回答 1

4

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

您正在替换 UINavigationBar 中的 drawRect: 方法,该方法非常脆弱,可能会让您(和您的用户)头疼。

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

没有办法替换 EKEventEditViewController 的标题。当然总有办法,但比替换drawRect的实现还要糟糕:

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

于 2011-03-22T19:56:37.450 回答