UIVisualEffectView визуально отличается на разных устройствах

В моем ViewController.swift:

var img = UIImageView(image: UIImage(named: "puddles"))

img.frame = view.bounds;
view.addSubview(img);


var effect = UIBlurEffect(style: UIBlurEffectStyle.Light)
var effectView = UIVisualEffectView(effect: effect)
effectView.frame = CGRectMake(0, 0, 500, 500)
view.addSubview(effectView)

Изображение, отображаемое с использованием приведенного выше кода в симуляторах iPad Air, iPhone 5 или iPhone 5S:

woof, doesn't that look so good

Изображение, отображаемое с использованием кода выше в симуляторах iPhone 4S, iPad 2 или iPad Retina:

I can't see my doge!

Примечание. Оба изображения выше были взяты из симулятора, но это можно воспроизвести на реальных устройствах, на которых работает iOS 8 Beta 1.

Очевидно, что я хотел бы добиться первого эффекта на всех устройствах. Как я могу добиться того же первого эффекта на всех устройствах?

Ответ 1

UIVisualEffectView в iOS 8 делает почти то же самое, что и прозрачность (ранее private API) и эффекты яркости, наблюдаемые в iOS 7. Как и эффекты iOS 7, они возвращаются к графически более простым реализациям на аппаратном обеспечении, которое не может визуализировать такие сложные графические эффекты в реальном времени.

Ответ 2

Мы недавно затронули эту проблему, когда наш визуальный эффект был уродливым серым цветом на одной из наших машин для разработчиков.

UIVisualEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

Оказывается, что они активировали Low Quality Graphics Override на своем симуляторе iOS. Возврат этой опции к Device Default устраняет проблему и отображает приятный полупрозрачный вид.

iOS Simulator > Панель меню > Отладкa > Отмена качества графики > По умолчанию устройства

Функция переопределения графики низкого качества в iOS Simulator