繁体   English   中英

在CALayer的蒙版区域周围添加阴影

[英]Add shadow around the masked region of a CALayer

我掩盖CAGradientLayerCAShapeLayer以产生在我的表坐镇内线一定行的书签。

在此输入图像描述

        CGMutablePathRef path = CGPathCreateMutable();
        CGPathAddLines(path,
                       NULL,
                       (CGPoint[]){
                           CGPointMake(8, 0),
                           CGPointMake(22, 0),
                           CGPointMake(22, 22),
                           CGPointMake(15, 16),
                           CGPointMake(8, 22)
                       },
                       5);
        CGPathCloseSubpath(path);

        CAShapeLayer *mask = [CAShapeLayer layer];
        mask.fillColor = [UIColor redColor].CGColor;
        mask.bounds = CGRectMake(0, 0, 30, 30);
        mask.path = path;
        mask.anchorPoint = CGPointMake(0, 0);

        CGPathRelease(path);

        CAGradientLayer *favoriteBadge = [CAGradientLayer layer];
        favoriteBadge.colors =
            @[(id)[UIColor colorWithRed:.97f green:0.5f blue:0.1f alpha:1.f].CGColor, // orange
              (id)[UIColor colorWithRed:1.f green:.8f blue:0.f alpha:1.f].CGColor]; // yellow
        favoriteBadge.locations = @[@0.0, @1.0];
        favoriteBadge.bounds = CGRectMake(0, 0, 30, 30);
        favoriteBadge.anchorPoint = CGPointMake(1, 0);
        favoriteBadge.position = CGPointMake(self.bounds.size.width, 0);
        favoriteBadge.mask = mask;
        // FIXME: This shadow is not being applied
        favoriteBadge.shadowColor = [UIColor colorWithRed:.97f green:0.5f blue:0.1f alpha:1.f].CGColor;
        favoriteBadge.shadowOpacity = 1.f;

这看起来太平了,所以我想用形状本身周围的阴影完成这个。 我已尝试在图层上启用阴影,但似乎没有应用。 我认为它被应用在不在形状内的区域。 如何在形状本身添加阴影?

我可以复制图层,使图像变暗并将其位置偏移几个像素,但是当CoreAnimation可以为我更高效地执行此操作时,这会让您感到浪费。

为蒙版图层创建容器图层,并将阴影应用于容器图层。 我相信它在这里描述:

http://travisjeffery.com/b/2012/08/ios-how-to-mask-and-shadow-an-image/

也许你唯一遗漏的是

favoriteBadge.masksToBounds = NO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM