Мое приложение использует UIVisualEffectView
, чтобы размыть фон точно так же, как Control Center. Но я обнаружил, что iPad 2 (и Retina iPad), который может запускать iOS 8, недостаточно мощный, чтобы отображать этот эффект, чтобы он возвращался к серому цвету. Я хотел бы узнать, работает ли приложение, работающее на нем, достаточно мощным, чтобы отображать эффект размытия, и если не я его не применяю, вместо этого я изменю цвет фона на что-то, что выглядит намного лучше, чем это серый цвет. Но я не хочу просто проверять, является ли устройство iPad 2 или iPad 3-го поколения (это также влияет на четвертый?). Есть ли лучший способ определить, появится ли UIBlurEffect
как ожидалось?
Определить, правильно ли отображается устройство UIVisualEffectView?
Ответ 1
Проверьте этот сеанс 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];
...
Ответ 2
Apple внутренне использует [UIDevice _graphicsQuality]
для этих проверок. В следующем сообщении я предлагаю метод, который делает то же самое, используя только открытый API: fooobar.com/info/451331/...