在部分视图上实现模糊

时间:2013-04-17 10:43:49

标签: ios objective-c ipad opengl-es core-graphics

如何以实用方式实现下面的图像 - 这意味着数字可以在运行时更改,甚至可以用电影替换?

enter image description here

3 个答案:

答案 0 :(得分:1)

只需在你的东西上添加一个模糊的UIView。

例如...制作所需视图大小的UIImage,使用CIFilter进行模糊,然后将其添加到视图中。它应达到预期的效果。

答案 1 :(得分:1)

This通常是同一个问题,并且有很多方法可以回答。无论如何,我会再提出1个问题:

从UIView获取图片

+ (UIImage *)imageFromLayer:(CALayer *)layer {
    UIGraphicsBeginImageContext([layer frame].size);
    [layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return outputImage;
}

而不是玩这个以获得视图的所需部分作为图像。现在创建一个新视图并添加图像视图(使用从图层获得的图像)。然后移动图像视图的中心以实现高斯算法,并再次从该图层中取出图像并将其放回原始视图。

移动中心应该由半径片段(我以.5f开头)和重采样范围来定义。

for(int i=1; i<resampleCount; i++) {
view1.center = CGPointMake(view1.center.x + radiusFragment*i, view1.center.y);
view2.center = CGPointMake(view2.center.x - radiusFragment*i, view2.center.y);
view3.center = CGPointMake(view3.center.x, view3.center.y + radiusFragment*i);
view4.center = CGPointMake(view4.center.x, view4.center.y - radiusFragment*i);
//add the subviews
}
//get the image from view

所有子视图都需要将alpha设置为1.0f/(resampleCount*4)

这种方法可能不是最快的,但它实现起来非常容易,如果你可以将半径和重新采样范围设置为最小片段,它应该可以很好地完成。

答案 2 :(得分:-1)

使用白色背景的UIView并减少alpha属性

blurView.backgroundColor=[UIColor colorWithRed:255 green:255 blue:255 alpha:0.3]