检测设备是否正确显示UIVisualEffectView?

时间:2014-10-16 18:16:42

标签: ios ios8 uiblureffect uivisualeffectview

我的应用使用UIVisualEffectView来模糊背景,就像控制中心一样。但我发现可以运行iOS 8的iPad 2(和Retina iPad)不足以显示该效果,因此它恢复为灰色。我希望能够检测到应用程序运行的设备是否足够强大以显示模糊效果,如果不是我不会应用它,而是我将背景颜色更改为看起来比灰色好多了。但我不想检查该设备是iPad 2还是iPad第3代(它是否也会影响第4代?)。有没有更好的方法来检测UIBlurEffect是否会按预期显示?

2 个答案:

答案 0 :(得分:9)

检查此WWDC会话:http://asciiwwdc.com/2014/sessions/419

  

所以,重申在哪些设备上我们不会模糊,我们只在iPad 2和iPad第3代上进行着色,我们只是应用色调,我们跳过模糊步骤。

     

[...]

     

在iPad第4代,iPad Air,iPad Mini,带视网膜显示器的iPad Mini,iPhone和iPod touch上,我们同时进行模糊和着色。

我猜你必须求助于检查机器名称:

#import <sys/utsname.h>
...

struct utsname systemInfo;
uname(&systemInfo);

NSString *deviceName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
...

答案 1 :(得分:2)

Apple内部使用[UIDevice _graphicsQuality]进行此类检查。在以下文章中,我提出了一种仅使用公共API执行相同操作的方法:https://stackoverflow.com/a/27879304/1914276