Как определить, поддерживает ли устройство на iOS эффект blur (размытие)?

Вариант 1. Требуется определить поддерживает ли устройство blur программно.
Решение:
http://stackoverflow.com/questions/19412094/how-can-i-detect-if-an-ios-device-supports-the-blur-effect

Код:

@interface UIDevice (Additions)

@property (readonly) NSString *platform;
@property (readonly) BOOL canBlur;

@end


@implementation UIDevice (Additions)

- (NSString *)platform {
    int mib[] = { CTL_HW, HW_MACHINE };
    size_t len = 0;
    sysctl(mib, 2, NULL, &len, NULL, 0);
    char *machine = malloc(len);
    sysctl(mib, 2, machine, &len, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
    free(machine);

    return platform;
}

- (BOOL)canBlur {
    if(NSStringFromClass([UIVisualEffectView class]) && UIDevice.currentDevice.systemVersion.floatValue >= 8.0 && !UIAccessibilityIsReduceTransparencyEnabled()) {
        NSString *platform = self.platform;
        CGFloat deviceVersion = [[[platform stringByReplacingOccurrencesOfString:@"[^0-9,.]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, platform.length)] stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue];

        if([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"]) {
            return YES;
        } else if([platform rangeOfString:@"iPhone"].location != NSNotFound) {
            return (deviceVersion >= 4.1);
        } else if([platform rangeOfString:@"iPod"].location != NSNotFound) {
            return (deviceVersion >= 5.1);
        } else if([platform rangeOfString:@"iPad"].location != NSNotFound) {
            return (deviceVersion >= 3.4);
        }
    }

    return NO;
}

Важно помнить:
— включается/отключается только через системные настройки;
— blur (размытие) и прозрачность включается/отключается одновременно;
— в iOS 7 можно отключить эффект, но только в iOS 8 можно определить, отключен ли он. В самом приложении Apple только предлагает (но не настаивает) следить за прозрачностью, т.е. например можно сделать полупрозрачный элемент, когда в системе прозрачность отключена;
— поддержка blur на уровне ОС зависит не только от версии iOS, но и от типа устройства. Подробный список ниже.

Вариант 2. Определить поддержку конкретного устройства.
Первый способ хорош для компьютера, но не очень нагляден для человека. Здесь можно увидеть, какой строкой обозначается конкретная модель устройства в приложении:
http://stackoverflow.com/questions/448162/determine-device-iphone-ipod-touch-with-iphone-sdk

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *