iOS анимирует размытие для вида

Я хотел бы быстро анимировать размытие в UIView для использования в качестве перехода в моем приложении. Я не знаю, с чего начать. Я считаю, что основной образ — это правильный инструмент для работы. Может ли кто-нибудь указать мне пример того, как размыть UIView? Я предполагаю, что мне нужно будет преобразовать представление в один UIImage, но я не знаю, что делать дальше.

Заранее спасибо!


person nothappybob    schedule 03.11.2012    source источник
comment
iphonedevwiki.net/index.php?title=CAFilter попробуйте использовать UIView но поскольку CIGaussianBlur отсутствует в iOS версии 5.1, вам может потребоваться найти другой способ сделать это в версии 5.x и старше.   -  person Bala    schedule 05.11.2012


Ответы (3)


rasterizeScale слоя uiview - это то, что вам нужно. Вот код для добавления эффекта размытия в UIVIew:

CALayer *layer = [self.blurView layer];
[layer setRasterizationScale:0.3];
[layer setShouldRasterize:YES];

Подробности см. в документации Apple по CALayer, Вам также может помочь этот учебник, надеюсь, это поможет

person Asif Mujteba    schedule 03.11.2012
comment
Это настолько уродливо, насколько это возможно... Я надеялся на что-то более чистое. Я предполагаю, что могу просто анимировать свойство rasterizationScale? - person nothappybob; 03.11.2012

Создание снимка представления и использование GPUImage от Брэда Ларсона (GPUImageGaussianBlurFilter) дало мне хорошие результаты.

Чтобы анимировать представление, я создал ImageView с размытым изображением и анимировал альфа-канал от 0 до 1, чтобы размытие появлялось постепенно.

В качестве альтернативы я предполагаю, что можно увеличить размер размытия на кадр.

#import "GPUImage.h"
...
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
...
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
...
GPUImageGaussianBlurFilter * filter = [[GPUImageGaussianBlurFilter alloc] init];
filter.blurSize = 0.5;
UIImage * blurred = [filter imageByFilteringImage:image];
person Aurelien Cobb    schedule 30.04.2013
comment
Спасибо за ваш ответ, он отлично работает, но теперь изменился фреймворк GPUImage, а свойство blurSize было удалено. Я пытаюсь использовать новое свойство: filter.blurRadiusInPixels = 50;, но эффект размытия на моем снимке недостаточно силен, у вас есть идея? Если я попытаюсь добавить значение, превышающее 200, мое приложение выйдет из строя. - person AnthonyR; 24.07.2015

Недавно я провел несколько тестов с размытием серии изображений с разными настройками размытия и анимацией их просто с помощью UIImageView. Возможно, вы захотите взглянуть:

Анимированное GaussianBlur

person kenshin03    schedule 14.04.2013