怎么给UIView设置模糊效果

@interface UIView (Effects)


- (void)blur;

- (void)unBlur;


@end




@implementation UIView (Effects)


- (void)blur{

    UIGraphicsBeginImageContext(self.bounds.size);

    [self.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    

    CIContext *context = [CIContext contextWithOptions:nil];


    CIImage *imageToBlur = [CIImage imageWithCGImage:viewImage.CGImage];

    CIFilter *gaussianBlurFilter = [CIFilter filterWithName: @"CIGaussianBlur"];

    [gaussianBlurFilter setValue:imageToBlur forKey: @"inputImage"];

    [gaussianBlurFilter setValue:[NSNumber numberWithFloat: 15] forKey: @"inputRadius"];

    CIImage *resultImage = [gaussianBlurFilter valueForKey: @"outputImage"];

    

    CGImageRef cgImage = [context createCGImage:resultImage fromRect:self.bounds];

    UIImage *blurredImage = [UIImage imageWithCGImage:cgImage];

    CFRelease(cgImage);


    UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.bounds];

    imageView.tag = -1;

    imageView.image = blurredImage;

    

    UIView *overlay = [[UIView alloc] initWithFrame:self.bounds];

    overlay.tag = -2;

    overlay.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.1];

    //overlay.backgroundColor = [UIColor clearColor];

    //overlay.alpha = 0.1;

    [self addSubview:imageView];

    [self addSubview:overlay];

    

    [imageView release];

    [overlay release];

}


-(void)unBlur{

    [[self viewWithTag:-1] removeFromSuperview];

    [[self viewWithTag:-2] removeFromSuperview];

}


 

@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值