使用Xcode 4.2支持4.0到5.0版的iPhone版本

时间:2011-11-03 13:06:32

标签: objective-c xcode uinavigationbar xcode4.2 ios5

您好我正在使用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但它没有工作,所以请帮助我。

3 个答案:

答案 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的帖子:

Background image for navigation view