如何将模糊应用于UIView?
image-processing
ios
5
0

现在,我正在构建一个iPhone应用程序,该应用程序需要模糊整个UIView。我该如何实现?我已经看到了这个框架 ,但是我认为不适用于UIView。有没有一种模糊UIView的替代方法?

更新 :在下面检查我的更新答案,以了解更多有关iOS 7和iOS 8的问世。

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

这应该工作。我在代码中添加了注释,以帮助您了解发生了什么:

//To take advantage of CIFilters, you have to import the Core Image framework
#import <CoreImage/CoreImage.h>

//Get a UIImage from the UIView
UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

//Blur the UIImage with a CIFilter
CIImage *imageToBlur = [CIImage imageWithCGImage:viewImage.CGImage];    
CIFilter *gaussianBlurFilter = [CIFilter filterWithName: @"CIGaussianBlur"]; 
[gaussianBlurFilter setValue:imageToBlur forKey: @"inputImage"]; 
[gaussianBlurFilter setValue:[NSNumber numberWithFloat: 10] forKey: @"inputRadius"];
CIImage *resultImage = [gaussianBlurFilter valueForKey: @"outputImage"]; 
UIImage *endImage = [[UIImage alloc] initWithCIImage:resultImage];

//Place the UIImage in a UIImageView
UIImageView *newView = [[UIImageView alloc] initWithFrame:self.view.bounds];
newView.image = endImage;
[self.view addSubview:newView];

如果您对代码有任何疑问,请将其保留在注释中。

注意: CIGaussianBlur从5.1版本开始在iOS上不存在,因此您必须找到另一种方法来模糊设备5.x +的视图(感谢@BradLarson)。在这个问题上被接受的答案看起来很有希望替代,就像这个图书馆一样

收藏
评论

在iOS 8中,您可以使用UIVisualEffectView来获取模糊的视图。参见: https : //developer.apple.com/documentation/uikit/uivisualeffectview

收藏
评论

自iOS 7发行以来,这个问题一直备受关注,我认为我应该对自己最终的工作进行跟进。

我当时使用photoshop亲自对图片进行模糊处理,但是有很多出色的第三方库可以进行动态静态模糊处理,以下是一些:

我想发布此信息,因为您不再需要拍摄单个框架或屏幕的屏幕截图。

iOS 8:随着iOS 8的即将发布,Apple包括了内置的模糊UIViewUIVisualEffectViewhttps://developer.apple.com/documentation/uikit/uivisualeffectview

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号