Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从CALayer的中间切割形状_Ios_Objective C_Core Graphics_Calayer - Fatal编程技术网

Ios 如何从CALayer的中间切割形状

Ios 如何从CALayer的中间切割形状,ios,objective-c,core-graphics,calayer,Ios,Objective C,Core Graphics,Calayer,我不确定这是否可行,但我一直在尝试用CALayers创建一个暂停按钮。我已经创建了一个圆,可以将暂停矩形添加到中间精细区域。然而,暂停线是一个指定的颜色,我希望他们是透明的,通过背景视图 目前我有一个自定义视图,它有一个圆形层,然后是暂停层。有没有一种方法可以从圆形图层上剪下矩形,这样无论它放在哪里,都可以看到它 提前感谢您可以用透明颜色填充暂停矩形 [layer setFillColor:[UIColor colorWithRed:1 green:0 blue:0 alpha:.7].CGCo

我不确定这是否可行,但我一直在尝试用CALayers创建一个暂停按钮。我已经创建了一个圆,可以将暂停矩形添加到中间精细区域。然而,暂停线是一个指定的颜色,我希望他们是透明的,通过背景视图

目前我有一个自定义视图,它有一个圆形层,然后是暂停层。有没有一种方法可以从圆形图层上剪下矩形,这样无论它放在哪里,都可以看到它


提前感谢

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

[layer setFillColor:[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];

你看过面具的属性了吗?我使用CAShapeLayer创建了一个小矩形,并将其设置为圆圈层的.mask属性,但随后除了线条之外,所有的东西都消失了,因为它明显地剪切了线条路径之外的任何东西。您是否尝试并查看了这些结果?这似乎是你想要的。不知道我怎么错过了那一个,只是现在看看,谢谢!
    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];