鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 操作系统维护 > 其它 > >

如何在CALayer设置滤镜

来源:互联网 作者:佚名 时间:2017-09-04 12:37
网上有很多关于CALayer中设置filtes属性的相关资料比如如何设置一个带滤镜的layer,代码如下; NSImage* image = [NSImage imageNamed:@"IMG_4062.jpg"]; CALayer* layer = [CALayer layer]; layer.frame = m_myView.bounds; layer.contents = (id)[image CGI

网上有很多关于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上设置过以上滤镜后的效果图:

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

网友评论
<