【发布时间】:2012-02-28 20:34:22
【问题描述】:
我正在开发的应用程序有一个自定义导航栏,但支持 iOS 4.2-iOS 5,所以我需要在我的应用程序委托中以这种老式方式设置 UINavigationBar 背景和色调。
@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
self.tintColor = [UIColor colorWithRed:42.0/255.0
green:164.0/255.0
blue:182.0/255.0
alpha:1.0];
UIImage *img = [UIImage imageNamed:@"navbar_bg.png"];
[img drawInRect:CGRectMake(0.0, 0.0,
self.frame.size.width,
self.frame.size.height)];
}
@end
这在大多数情况下都有效,但我注意到当应用程序第一次启动时,UIBarButtonItems 会闪烁默认导航栏颜色一秒钟,然后它们会自行更正并更改颜色以匹配导航栏。有趣的是,导航栏本身从一开始就正确使用了背景图像。
需要明确的是,我在 iOS 5 设备上为 UINavigationBar 使用 setBackgroundImage,它按预期工作,因此 Flash 仅在 iOS 4 中。
任何人都知道为什么会发生这种情况和/或如何解决它?
【问题讨论】:
-
在应用程序生命周期的什么时候调用引用代码的类,它在 viewDidLoad 中吗?
标签: objective-c ios uinavigationbar