- (UIImage *)blurImageFromBackGround { //parentView是要生成模糊背景的view UIGraphicsBeginImageContext(self.parentView.bounds.size); [self.parentView.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); CIContext *context = [CIContext contextWithOptions:nil]; CIImage *inputImage = [CIImage imageWithCGImage:img.CGImage]; CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"]; [filter setValue:inputImage forKey:kCIInputImageKey]; CGFloat blurLevel = 5.0f; [filter setValue:[NSNumber numberWithFloat:blurLevel] forKey:@"inputRadius"]; CIImage *result = [filter valueForKey:kCIOutputImageKey]; //高斯模糊会是图片周为有一圈宽度为blurLevel的透明区域,需要截取 CGRect rect = inputImage.extent; rect.origin.x += blurLevel; rect.origin.y += blurLevel; rect.size.height -= blurLevel*2.0f; rect.size.width -= blurLevel*2.0f; CGImageRef cgImage = [context createCGImage:result fromRect:rect]; UIImage *returnImage = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); return returnImage; }