CALayer mask 遮罩

本文介绍如何利用iOS中的CAShapeLayer作为遮罩(mask)来限定CAGradientLayer的显示区域,通过具体代码示例展示了如何创建不规则形状的遮罩并应用到渐变色图层上,最终实现独特的视觉效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mask - 遮罩,遮罩之外部分不会显示

CAGradientLayer - 渐变色layer


UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(5, 5)];
    [path addLineToPoint:CGPointMake(80, 5)];
    [path addLineToPoint:CGPointMake(100, 30)];
    [path addLineToPoint:CGPointMake(120, 5)];
    [path addLineToPoint:CGPointMake(140, 80)];
    [path closePath];
    
    //遮罩layer
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
    shapeLayer.strokeColor = [UIColor purpleColor].CGColor;
    shapeLayer.fillColor = [UIColor orangeColor].CGColor;
    shapeLayer.lineWidth = 3;
    shapeLayer.path = path.CGPath;
    
    //渐变色layer
    CAGradientLayer *gradiLayer = [CAGradientLayer layer];
    gradiLayer.colors = @[(__bridge id)[UIColor blueColor].CGColor,(__bridge id)[UIColor yellowColor].CGColor,(__bridge id)[UIColor redColor].CGColor];
    gradiLayer.frame = CGRectMake(0, 0, 200, 100);
    gradiLayer.locations = @[@(0),@(0.3),@(1)];
    gradiLayer.startPoint = CGPointMake(0.5, 0);
    gradiLayer.endPoint = CGPointMake(0.5, 1);
    
    [backView.layer addSublayer:gradiLayer];
    [backView.layer addSublayer:shapeLayer];
    
    //遮罩范围之外的部分不会显示
    gradiLayer.mask = shapeLayer;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值