不在IOS 5中显示颜色和数据

时间:2011-12-20 10:55:53

标签: iphone ios5 uinavigationbar uitoolbar

我在Xcode 4中实现了一个定制的导航栏和工具栏,目标是iOS 4.3,现在正在更新我的xcode 4.2,目标是iOS 5.在iOS 5中,自定义功能不起作用,但每当我使用iOS 4.3模拟器时,它的工作正常。

提前致谢

1 个答案:

答案 0 :(得分:2)

您是否使用drawRect类别方法自定义导航栏?

如果是这样我有同样的问题,在IOS 5中没有调用drawRect方法,IOS5现在内置了自定义导航栏的功能。

IOS5有一个新的外观属性,可用于自定义它,所以我做的是检查外观属性是否存在,如果存在,那么你需要使用新的外观方法。

所以我仍然拥有在IOS版本上运行时使用的drawRect类别< 5,然后在我的视图控制器中,我检查外观对象是否存在,如果是,然后使用它自定义导航栏,现在它适用于IOS 5及以下:

我的viewDidLoad方法如下所示,它设置了导航栏的背景:

if ([self.navigationController.navigationBar respondsToSelector:@selector(appearance)]){
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"HeaderBar.png"] forBarMetrics:UIBarMetricsDefault];
}

您还可以使用以下代码为appDelegate中的所有导航栏设置Appearance对象:

if ([UINavigationBar respondsToSelector:@selector(appearance)]){
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"HeaderBar.png"] forBarMetrics:UIBarMetricsDefault];
}

上面的代码是在UINavigationBar类上设置外观而不是导航栏的单个实例。这意味着IOS会将外观应用于所有导航栏。