2012-11-03 118 views
2

我想快速地將UIView上的模糊動畫化,以在我的應用中用作轉換。我無法知道從哪裏開始。我相信核心形象是這項工作的適當工具。任何人都可以指向我如何模糊UIView的示例?我假設我需要將視圖轉換爲單個UIImage,但我不知道從哪裏開始。iOS爲視圖創建動畫模糊

在此先感謝!

+0

http://www.iphonedevwiki.net/index.php?title=CAFilter嘗試使用您的UIView但由於CIGaussianBlur不存在iOS上爲5.1,你可能需要找到不同的方式在5.x及更高版本上完成此操作。 – Bala

回答

4

一個UIView的層rasterizeScale是你所需要的,這是用於添加模糊效果的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,並將Alpha通道從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