1

我目前使用我的应用代表这个代码来设置导航栏自定义背景图片:清除iPhone导航栏图像

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

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

有没有人知道的方法来做到这一点,同时仍然使用设定的导航栏背景图像所述的方法?在UINavigationBar的,非常脆,容易造成你(和你的用户),头痛方法:

回答

4

请,从来没有做到这一点...

您要更换的drawRect。

你的背景将永远UINavigationBar的所有实例显示出来,因为你已经取代的drawRect执行:

没有办法更换EKEventEditViewController的称号。当然总有办法,但是它比替换drawRect的实现更糟糕:

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

+0

+1我可以建议http://stackoverflow.com/questions/4593816/custom-uinavigatonbar-exception/4594112#4594112 – Jilouc 2011-03-22 21:14:11

+0

感谢您的帮助。有没有特别的理由,这种方法是不是首选,或者它只是不稳定(导致崩溃等)?此外,比你Jilouc,我没有看到过这个线程,我可能会这样做... – 2011-03-23 14:05:56

+0

嗨,帕特里克,因为你正在替换一个系统类的方法,你正在阻止假定的实现从用过的。请不要使用Jilouc的ObjC运行时黑客,它只是以不同的方式变得脆弱...... – 2011-03-23 17:10:58