【问题标题】:iOS animate a blur for a viewiOS 为视图设置模糊动画
【发布时间】:2012-11-03 15:17:09
【问题描述】:

我想快速为 UIView 上的模糊设置动画,以在我的应用中用作过渡。我不知道从哪里开始。我相信核心形象是完成这项工作的合适工具。谁能指出我如何模糊 UIView 的示例?我假设我需要将视图转换为单个 UIImage,但我不知道从那里开始。

提前致谢!

【问题讨论】:

  • iphonedevwiki.net/index.php?title=CAFilter 尝试使用您的 UIView 但由于 CIGaussianBlur 从 5.1 开始在 iOS 上不存在,您可能需要在 5.x 和更早版本上找到一种不同的方法来完成此操作。

标签: ios animation uiview blur core-image


【解决方案1】:

拍摄视图的快照并使用 Brad Larson 的 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];

【讨论】:

  • 感谢您的回答,效果很好,但是现在GPUImage框架发生了变化,并且属性blurSize已经被移除。我尝试使用新属性:filter.blurRadiusInPixels = 50; 但我的快照上的模糊效果不够强,您对此有什么想法吗?如果我尝试添加一个高于 200 的值,我的应用程序就会崩溃..
【解决方案2】:

你需要一个uiview层的rasterizeScale,下面是给UIVIew添加模糊效果的代码:

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

详情参考Apple Documentation of CALayer,另外这个tutorial可能对你有帮助,希望对你有帮助

【讨论】:

  • 这太丑了……我希望有更干净的东西。我假设我可以为 rasterizationScale 属性设置动画?
【解决方案3】:

我最近做了一些测试,用不同的模糊设置模糊了一系列图像,并简单地使用 UIImageView 为它们设置动画。你可能想看看:

AnimatedGaussianBlur

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多