2012-11-03 3 views
2

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

Заранее благодарен!

+0

http://www.iphonedevwiki.net/index.php?title=CAFilter попробовать его с помощью UIView, но так как CIGaussianBlur нет на прошивкой, как 5,1, вы, возможно, придется найти другой способ выполняя это на 5.x и старше. – Bala

ответ

4

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

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

Для получения дополнительной информации обратитесь к Apple Documentation of CALayer, Кроме того, этот tutorial может помочь Вам, надеюсь, что помогает

+5

Это так же уродливо, как может быть ... Я надеялся на что-то более чистое. Я предполагаю, что могу просто анимировать свойство rasterizationScale? – nothappybob

3

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

AnimatedGaussianBlur

9

Принимая снимок просмотра и использования 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]; 
+0

Спасибо за ваш ответ, он отлично работает, но теперь инфраструктура GPUImage изменилась, и свойство blurSize было удалено. Я пытаюсь использовать новое свойство: 'filter.blurRadiusInPixels = 50;', но эффект размытия недостаточно для моего моментального снимка, у вас есть идея для этого? Если я попытаюсь добавить значение, превышающее 200, мое приложение рушится. – AnthonyR

Смежные вопросы