我目前在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),导航栏中的标题显示“添加事件”,它显示在我的自定义图像之上。
我尝试了几种方法来更改标题(无效),但宁愿阻止自定义导航栏背景图像仅在此模态视图中显示。
有没有人知道如何使用所述方法设置导航栏背景图像?
答案 0 :(得分:4)
拜托,永远不要这样做......
您正在替换UINavigationBar中的drawRect:方法,非常脆弱,可能会导致您(以及您的用户)头痛。
您的背景将始终显示在UINavigationBar的所有实例中,因为您已经替换了drawRect的实现:
无法替换EKEventEditViewController的标题。当然总有一种方法,但它甚至比替换drawRect的实现更糟糕:
相反,请创建UINavigationBar的子类,并在需要自定义导航栏的位置使用它。