网上有很多关于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上设置过以上滤镜后的效果图:
希望上面我的经验能够帮到一些朋友,少走些弯路,也不枉我这两天的时间了。