美文网首页iOS学习笔记程序员iOS Developer
通过CAShaperLayer把UIView做成镂空效果

通过CAShaperLayer把UIView做成镂空效果

作者: Fluent | 来源:发表于2016-05-16 10:12 被阅读1268次

在做公司项目过程中,有时我们会遇到一个视图中间是镂空的效果,首先,我们可能想到的是在四周创建一些视图,中间是空的。那么,我们有没有简单方法呢?下面,就小编给大家介绍一下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的更多使用。

相关文章

网友评论

  • A天天涨不停:最后哪行代码不是打马赛克。。。不过给你三十二个赞。思路不错
    Fluent:@水瓶座_iOSer 谢谢了。
  • A天天涨不停:看了一下,代码有漏洞哦,CGMutablePathRef没释放。
    A天天涨不停:@FlyChang 不客气,互相学习。我也是个小白。
    Fluent:@水瓶座_iOSer 是的,给忘了,swift中CGMutablePathRef是类,OC里面是结构体,之前用swift写的,给搞混了,多谢指点。

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

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