Определить, правильно ли отображает устройство UIVisualEffectView?

Мое приложение использует UIVisualEffectView размыть фон так же, как Центр управления. Но я обнаружил, что iPad 2 (и iPad Retina), который может работать на iOS 8, недостаточно мощный, чтобы отображать этот эффект, поэтому он превращается в серый цвет. Я хотел бы иметь возможность определить, является ли устройство, на котором работает приложение, достаточно мощным, чтобы отображать эффект размытия, и если нет, я не буду применять его, вместо этого я изменю цвет фона на что-то, что выглядит намного лучше, чем этот серый цвет. Но я не хочу просто проверять, является ли устройство iPad 2 или iPad 3-го поколения (это также влияет на 4-е?). Есть ли лучший способ обнаружить, если UIBlurEffect появится как положено?

2 ответа

Решение

Проверьте эту сессию WWDC: http://asciiwwdc.com/2014/sessions/419

Итак, чтобы повторить, на каких устройствах мы не размываем и что мы только делаем тонировку на iPad 2 и iPad 3-го поколения, мы просто применяем оттенок и пропускаем шаги размытия.

[...]

На iPad 4-го поколения, iPad Air, iPad Mini, iPad Mini с дисплеем Retina, iPhone и iPod touch мы делаем размытие и тонирование.

Я думаю, что вы должны прибегнуть к проверке имени машины:

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

struct utsname systemInfo;
uname(&systemInfo);

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

Apple внутренне использует [UIDevice _graphicsQuality] для такого рода проверок. В следующем посте я предлагаю метод, который делает то же самое, используя только общедоступный API: /questions/10954557/proverte-podderzhivaet-li-ustrojstvo-razmyitie/10954574#10954574

Другие вопросы по тегам