Определить, правильно ли отображает устройство 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