【问题标题】:How to cut a shape out of the middle of CALayer如何从CALayer中间切出一个形状
【发布时间】:2014-02-24 03:05:28
【问题描述】:

我不确定这是否可行,但我一直在尝试用 CALayers 创建一个暂停按钮。我创建了一个圆圈,可以将暂停矩形添加到中间罚款。但是,暂停线是指定颜色的,我希望它们是透明的,可以看到背景视图。

目前我有一个自定义视图,它有一个圆形图层,然后是暂停图层。有没有办法从圆形图层中剪下矩形,所以无论放置在哪个视图上都会显示出来

提前致谢

【问题讨论】:

  • 您查看过mask 属性吗?这让你走多远?
  • 我使用 CAShapeLayer 创建了一个小矩形,并将其设置为圆形图层的 .mask 属性,但随后除线条之外的所有内容都消失了,因为它显然剪裁了该线条路径之外的任何内容
  • 您尝试过search for something like "calayer invert mask" 并查看这些结果吗? very first search result 似乎是您所要求的。
  • 不知道我是怎么错过的,现在看看,谢谢!

标签: ios objective-c core-graphics calayer


【解决方案1】:

您可以用透明颜色填充暂停矩形。

[layer setFillColor:[UIColor colorWithRed:1 green:0 blue:0 alpha:.7].CGColor];

CGContextSetFillColorWithColor(cpntext, [UIColor colorWithRed:1 green:0 blue:0 alpha:.7].CGColor);

查看我使用的 .7 alpha。

例如下面的代码创建一个透明的矩形

    CAShapeLayer *layer =[CAShapeLayer layer];
    [layer setFrame:CGRectMake(0, 0, 100, 100)];
    UIBezierPath *path =[UIBezierPath bezierPathWithRect:CGRectMake(20, 20, 20, 80)];

    [layer setFillColor:[UIColor colorWithRed:1 green:0 blue:0 alpha:.7].CGColor];
    [layer setPath:path.CGPath];
    [self.view.layer addSublayer:layer];

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 2014-06-26
    • 2014-02-21
    • 2010-12-31
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多