美文网首页iOS开发心得
通过CAShaperLayer把UIView做成镂空效果

通过CAShaperLayer把UIView做成镂空效果

作者: 名扬丶四海 | 来源:发表于2016-05-17 16:47 被阅读308次

    声明:本来自己搞这篇文章是为了以后开发时自己用的,但是不知道为什么被简书推送到专题里面了.这篇文章不是我原创的,是我粘贴别人的.真正是作者是FlyChang.原文传送门通过CAShaperLayer把UIView做成镂空效果.

    在做公司项目过程中,有时我们会遇到一个视图中间是镂空的效果,首先,我们可能想到的是在四周创建一些视图,中间是空的。那么,我们有没有简单方法呢?下面,就小编给大家介绍一下CAShaperLayer是怎么给UIView做成镂空效果吧。
    话不多说,直接上代码!
    我们在控制器视图上加个view,控制器视图的颜色是黑色,添加的view颜色是红色

    - (void)viewDidLoad {
        [super viewDidLoad];
        self.view.backgroundColor = [UIColor blackColor];
        
        UIView *view = [[UIView alloc]init];
        view.frame = self.view.bounds;
        view.backgroundColor = [UIColor redColor];
        [self.view addSubview:view];
        
        CGFloat W = self.view.frame.size.width;
        CGFloat H = self.view.frame.size.height;
        CAShapeLayer *shapeLayer = [[CAShapeLayer alloc]init];
        CGMutablePathRef path = CGPathCreateMutable();
        // 保留顶部100
        CGPathAddRect(path, nil, CGRectMake(0, 0, W, 100));
        // 保留底部100
        CGPathAddRect(path, nil, CGRectMake(0, H - 100, W, 100));
        shapeLayer.path = path;
        self.view.layer.mask = shapeLayer
        // 之前没有释放path,更新一下,注意:在Swift中CGMutablePathRef是class不需要手动释放 CGPathRelease(path);
        CGPathRelease(path);
    }
    

    运行后的效果


    镂空效果图.png

    大家可以看到运行后中间是黑色,上下是红色。
    以上是对CAShapeLayer的简单使用,后期会给大家介绍CAShapeLayer的更多使用。

    相关文章

      网友评论

        本文标题:通过CAShaperLayer把UIView做成镂空效果

        本文链接:https://www.haomeiwen.com/subject/xbuirttx.html