我想检测用户是否启用了降低透明度。很简单,您只需调用函数 UIAccessibilityIsReduceMotionEnabled()
并返回一个 Bool
。但是我的应用程序针对 iOS 7 和 8,并且此功能在 iOS 7 上不可用。
在 Objective-C 中,这是我检查该函数是否存在的方式:
if (UIAccessibilityIsReduceMotionEnabled != NULL) { }
在 Swift 中,我不知道如何检查它是否存在。根据this answer ,您可以简单地使用可选链接,如果它是 nil
则它不存在,但这显然仅限于 Obj-C 协议(protocol)。 Xcode 6.1 不喜欢这样:
let reduceMotionDetectionIsAvailable = UIAccessibilityIsReduceMotionEnabled?()
它希望您删除 ?。当然,如果您这样做,它会在 iOS 7 上崩溃,因为该功能不存在。
检查这些类型的函数是否存在的正确方法是什么?
最佳答案
在 Swift 2 中添加了对可用性的适当检查。与此处提到的其他选项相比,建议使用此选项。
var shouldApplyMotionEffects = true
if #available(iOS 8.0, *) {
shouldApplyMotionEffects = !UIAccessibilityIsReduceMotionEnabled()
}
关于ios - 检查函数在 Swift 中是否可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706915/