Xcode + Swift - 如果设备使用 iOS 8,则只有某些元素

Posted

技术标签:

【中文标题】Xcode + Swift - 如果设备使用 iOS 8,则只有某些元素【英文标题】:Xcode + Swift - Only have certain elements if device is using iOS 8 【发布时间】:2014-09-11 15:55:12 【问题描述】:

我在做游戏,没想到我把目标设备设置为ios 8。我去把它改成iOS 7,以便兼容更多设备。但是,正如在 iOS 7 上测试的那样,我意识到 UIVisualEffectView 不起作用。无论如何我可以让 UIVisualEffectView 仅在运行的设备具有 iOS 8 而不是 iOS 7 时出现?

【问题讨论】:

阅读文档中的“SDK 兼容性指南”。它涵盖了这一点。哦等等,这真的只涵盖了 Objective-C。 互操作性文档讨论了如何检查可选/新功能。 如何创建UIVisualEffectView?如果它在代码中,请向我们展示代码。 【参考方案1】:

您可以像这样检查UIVisualEffectView 是否可用:

if (NSClassFromString("UIVisualEffectView") != nil) 
    NSLog("UIViewVisualEffectView is available");
    // Use UIVisualEffectView
 else 
    NSLog("UIViewVisualEffectView is not available");
    // Do something else

这种方法很好,因为代码记录了使用 if 语句的原因,并且您不必记住引入类时的操作系统版本。

【讨论】:

【参考方案2】:

查看this thread。您可以使用this answer 中的宏之一获取当前的 iOS 版本,然后决定使用哪些类。例如:

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")) 
    // Use UIVisualEffectViewClass
 else 
    // Use another class

如果您使用的是 swift,请忽略宏部分,直接使用代码。

【讨论】:

以上是关于Xcode + Swift - 如果设备使用 iOS 8,则只有某些元素的主要内容,如果未能解决你的问题,请参考以下文章

查看附近所有可发现的蓝牙设备 - Swift iOS XCode

使用 iOS App、Swift 获取设备/用户位置的问题

UIScreen.mainScreen().nativeBounds.height 无法使用 Xcode 7/Swift 2,目标 iOS7

我想在我的 ios 应用程序中播放在线视频,我正在使用 Swift3 + xcode [重复]

xcode gm ios 8 gm swift 今天扩展在模拟器和设备中崩溃:库未加载:@rpath/libswiftCore.dylib

NSFetchedResultsController XCode 7 问题