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]()