【问题标题】:How to execute a block of code in IOS7 not in IOS6?如何在 IOS 7 中而不是在 IOS 6 中执行代码块?
【发布时间】:2013-09-26 05:44:26
【问题描述】:

嗨,过去我开发了一个支持 IOS6 的应用程序。现在是时候支持 IOS7 的相同应用程序了。为了支持 IOS6 和 IOS7 的应用程序,我将每个组件的 Y 值增加了 20 pixels

在这里,我通过使用[[[UIDevice CurrentDevice]SystemVersion] floatvalue]; 方法获取操作系统版本。基于该操作系统版本,我正在更改每个组件的rect 值。

为了处理StatusbarStyle,我在IOS7中使用了以下方法

 1. [self setNeedsStatusBarAppearanceUpdate];
 2.-(UIStatusBarStyle)preferredStatusBarStyle;

这些方法在 IOS7 中运行良好,但是如果我在 IOS6 中安装应用程序,由于上述两种方法,应用程序会崩溃。

所以现在我的要求是我必须在 IOS6 设备中隐藏或不执行与 IOS7 相关的方法或更改。在此实现的帮助下,我希望我能解决这个问题。

即使我使用了一些方法来解决这个崩溃问题。我使用的方法是

1. #if __IPHONE_OS_VERSION_MAX_ALLOWED== 70000
2.#if __IPHONE_OS_VERSION_MIN_REQUIRED==70000

在创建 ipa 文件部署时,我设置的目标是 6.0。因为我要支持IOS6&IOS7。

所以请帮我解决这个问题。提前致谢。

【问题讨论】:

标签: ios ios6 ios7 uistatusbar


【解决方案1】:

使用NSFoundationVersionNumber 条件来执行此操作Supporting iOS 6

如果您需要为不同的应用版本加载不同的资源,并且您当前在 Info.plist 文件中确定了故事板或 XIB 文件 -

您可以使用Foundation framework 的版本来确定当前系统版本并在application:didFinishLaunchingWithOptions: 中加载相应的资源。下面的代码展示了如何检查 Foundation 框架版本:

 if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {

    // Load resources for iOS 6.1 or earlier

    } else {

    // Load resources for iOS 7 or later

    }

看看你想要的同一件事的最佳答案

iOS 7 status bar back to iOS 6 default style in iPhone app?

【讨论】:

  • 嗨 nitin 非常感谢您的快速响应。在 IOS6 中编译代码时我仍然收到错误。错误:使用未声明的标识符“NSFoundationVersionNumber_iOS_6_0”和“MainViewcontroller”没有可见的@interface 声明选择器“setNeedsStatusbarAppearanceUpdate”。
  • 它的 6.1 不是 6.0 我的朋友
  • 请不要使用floatValue,因为它可能会导致意外行为。例如[@"7.0.1" floatValue] &lt; [@"7.0.2" floatValue] => 否
【解决方案2】:

尝试检查这种情况:

if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
    // iOS 7
} else {
    // iOS 6
}

【讨论】:

  • 嗨 Nikhil 感谢您的回复。我仍然收到错误消息。所以,如果可以的话,请告诉我任何其他方式。
猜你喜欢
  • 2014-01-14
  • 2014-03-28
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多