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
UIScreen.mainScreen().nativeBounds.height 无法使用 Xcode 7/Swift 2,目标 iOS7
我想在我的 ios 应用程序中播放在线视频,我正在使用 Swift3 + xcode [重复]
xcode gm ios 8 gm swift 今天扩展在模拟器和设备中崩溃:库未加载:@rpath/libswiftCore.dylib