目标:我的 UINavigationBar 必须使用特定的背景和特定的标签字体进行自定义。
这在 iOS5 中通过外观协议很容易实现。行。
如果我的用户运行 < iOS5 怎么办?他将看到默认的 UINavigationBar,但如果我使用覆盖 drawRect 的类别扩展 UINavigationBar,则不会。
问题 1:如何根据 iOS 版本在 Prefix.pch 中指定 UINavigationBar 类别扩展的条件#import?
问题 2:假设我设法解决了问题 1,这可行吗?我的意思是,如果设备不是 iOS5 我没有设置 [UINavigationBar] 外观] 而是只导入类别,我需要做更多的事情吗?
编辑:这是 Vladimir 建议的实现,我现在没有 iOS4 设备或模拟器来测试它,但我认为它可能有效。
@implementation UINavigationBar (iOS4Appearance)
- (void)drawRect:(CGRect)rect
{
if (self.isiOS5) {
[super drawRect];
} else {
UIImage *background = [UIImage imageNamed: @"navigation-bar"];
[background drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
}
- (BOOL)isiOS5
{
return [[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0;
}
@end
谢谢你的帮助。