如何在CALayer设置滤镜,并显示Filter效果

网上有很多关于CALayer中设置filtes属性的相关资料比如如何设置一个带滤镜的layer,代码如下;

NSImage* image = [NSImage imageNamed:@"IMG_4062.jpg"];

CALayer* layer = [CALayer layer];

layer.frame = m_myView.bounds;

layer.contents = (id)[image CGImageForProposedRect:nil context:nil hints:nil];

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

[filter setDefaults];

[filter setValue:[NSNumber numberWithFloat:100.0] forKey:@"inputRadius"];

layer.filters = @[filter];

[m_myView.layer addSublayer:layer];

可是虽然加上滤镜的图层,运行程序你还是不能再m_myView上面看到滤镜的效果;为此我找了很多博客、文章都没有能找出答案,这个问题困扰了我两天才找出答案;

原来原因尽然如此的简单:光设置图层的filtes属性是不能够看到滤镜效果的,你还需设置Layer添加的view的LayerUsesCoreImageFitlers属性为YES;

上面的代码你需要在外面添加一句[m_myView setLayerUsesCoreImageFilters:YES];

原图:

在layer上设置过以上滤镜后的效果图:

希望上面我的经验能够帮到一些朋友,少走些弯路,也不枉我这两天的时间了。😂😂😂

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容