在图像上创建动态模糊效果

时间:2015-02-24 22:15:42

标签: ios objective-c

我正在尝试使用视图创建模糊效果,其中视图会在其后面创建模糊的图像。但是,我需要模糊对用户的滚动是动态的。这就是它的外观。 enter image description here

白色文字背后的纯黑色矩形背景是我试图模糊其背后图像的正确边界。此外,用户能够上下滚动视图,并且图片保持静止。这可能吗?这是怎么做到的?

这就是我目前试图模糊背景而没有运气的方式。

 UIVisualEffect *blurEffect;
        blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
        UIVisualEffectView *visualEffectView;
        visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
        visualEffectView.frame = header.artistBackgroundView.bounds;
        [header.artistBackgroundView addSubview:visualEffectView];

header.artistBackgroundView是黑色矩形。

2 个答案:

答案 0 :(得分:2)

您可能想要在iOS 8.0中添加的新UIVisualEffectView。

这使您可以创建一个视图,允许其下方的任何内容显示模糊版本 - 您应用中的其他内容或应用下方的跳板(iOS桌面)内容。

我在Mac OS中使用过NSVisualEffectView对象,但还没有机会使用iOS等价物。

我建议你看看UIVisualEffectView上的文档。

如果您不使用UIVisualEffectView,则必须拍摄下方视图的快照,使用Core Image过滤器创建模糊版本,然后通过某些自定义将其应用为背景码。这是可行的,但比现成的UIVisualEffectView类更多的工作。

答案 1 :(得分:1)

假设您在iOS 8中使用了新的模糊效果

好的,这就是模糊效果需要起作用的方式:模糊效果和图像之间的背景颜色必须是clearColor或具有一定的透明度 - 注意:不要更改视图本身的alpha ,只是背景颜色。此外,模糊效果必须落后于你想要的任何东西,所以你需要做这样的事情:

[header.artistBackgroundView sendSubviewToBack:visualEffectView];

请记住,效果只会模糊原本会直接位于其后面的东西...这就是为什么你需要确保效果和图像之间的每个视图都是透明的。任何半透明背景都会为模糊效果添加漂亮的色调。