通过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 *shperLayer = [[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));
    shperLayer.path = path;
    self.view.layer.mask = shperLayer;
    // 之前没有释放path,更新一下。注意:在Swift中CGMutablePathRef是class不需要手动释放
    CGPathRelease(path);
}

运行后的效果

大家可以看到运行后中间是黑色,上下是红色。


运行后的效果

以上是对CAShapeLayer的简单使用,后期会给大家介绍CAShapeLayer的更多使用。

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

推荐阅读更多精彩内容

  • 声明:本来自己搞这篇文章是为了以后开发时自己用的,但是不知道为什么被简书推送到专题里面了.这篇文章不是我原创的,是...
    名扬丶四海阅读 854评论 0 1
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 只有它,值得你花一生去学习 我们做过最蠢的事情,大概就是把最好的脾气给别人,而把最坏的脾气留给了家人。 好像猫叔说...
    小秦哥哥阅读 212评论 2 4
  • 在云雾山间有一处道观,道观名约白云观是师祖贺心师太在世的时候建造的,到现在的慧园师太也有个四、五代了。 这白云观大...
    良晓诺阅读 416评论 0 1