您好我正在使用xcode 4.2处理iOS SDK5,我想准备一个应该与iOS 4.0到5.0或至少4.3和5.0兼容的版本
我已经将基本sdk设置为5.0并将部署目标设置为4.0但是当我在iPhone 4模拟器中运行应用程序时,我的应用程序基本上由于下面的代码而崩溃
[testNavigationBar setBackgroundImage:[UIImage imageNamed:@"facebook-navbar.png"] forBarMetrics:UIBarMetricsDefault];
但是当我将iPhone模拟器从4切换到5时上面的代码运行正常我也尝试了setBackgroundColor但它没有工作,所以请帮助我。
答案 0 :(得分:2)
问题是该方法已添加到iOS5中,因此在iOS4中不存在。您需要进行运行时检查,看看您是否在iOS5中,如下所示:
if ([testNavigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics)]) {
[testNavigationBar setBackgroundImage:[UIImage imageNamed:@"facebook-navbar.png"] forBarMetrics:UIBarMetricsDefault];
}
现在的问题是你不会在iOS4中获得背景,所以你必须找到一个解决方法。
答案 1 :(得分:1)
这是因为-setBackgroundImage:是在iOS 5中引入的,Apple通常不会(通常)将新API备份到较旧的平台上。无论如何,你有两个选择:
if ([testNavigationBar respondsToSelector:@selector(setBackgroundImage:)]) {
// do what you're currently trying
}
else {
//find a compatible way to do it
}
或:
//find a compatible way to do it
答案 2 :(得分:1)
对于iOS版本4.x,您始终可以覆盖UINavigationBar drawRect。这是关于这个主题的Stack Overflow的帖子: