gpt4 book ai didi

ios - 带有 CAShapeLayer 蒙版的 CAGradientLayer 未显示

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:03 24 4
gpt4 key购买 nike

我有以下代码:

- (void)setupLayer {
self.faucetShape = [CAShapeLayer layer];
self.faucetShape.strokeColor = [[UIColor blackColor] CGColor];
self.faucetShape.lineWidth = 2;
self.faucetShape.fillColor = nil;
self.faucetShape.path = [self faucetPath].CGPath; // faucetPath returns a 4 point diamond shaped UIBezierPath*
self.faucet = [CAGradientLayer layer];
self.faucet.mask = self.faucetShape;
self.faucet.colors = @[(id)[UIColor redColor].CGColor, (id)[UIColor redColor].CGColor];
[self.layer addSublayer: self.faucet];
}

但它什么也没显示。不确定我遗漏了什么(除了我的图形)。

(faucetfaucetPath 都是属性)

更新

好的,我想 CAGradientLayer 必须有一个有意义的 frame。我假设 CAShapeLayerframe 没有那么有意义,因为 path 可以超出 frame。添加以下行使其显示出来:

self.faucet.frame = CGRectMake(0, 0, 64, 64);

所以现在我的问题是,有没有办法避免必须这样做?我只是希望层的框架隐含地成为包含 View /层的框架。

最佳答案

您需要设置图层的边框。以下代码将绘制一个红色圆圈:

- (void)setupLayer
{
CAShapeLayer *faucetShape = [CAShapeLayer layer];
faucetShape.frame = CGRectMake(0, 0, 100, 100);
faucetShape.strokeColor = [[UIColor blackColor] CGColor];
faucetShape.lineWidth = 2;
faucetShape.fillColor = nil;
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, nil, CGRectMake(0, 0, 100, 100));
faucetShape.path = path;
CGPathRelease(path);
CAGradientLayer *faucet = [CAGradientLayer layer];
faucet.frame = CGRectMake(10, 10, 100, 100);
faucet.mask = faucetShape;
faucet.colors = @[(id)[UIColor redColor].CGColor, (id)[UIColor redColor].CGColor];
[self.view.layer addSublayer: faucet];
}

关于ios - 带有 CAShapeLayer 蒙版的 CAGradientLayer 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21121670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com