gpt4 book ai didi

ios - 在自定义 UIView 中渲染 CAShapeLayer

转载 作者:行者123 更新时间:2023-11-29 02:47:30 25 4
gpt4 key购买 nike

我在自定义 tableViewCell 中有一个自定义 UIView。我正在尝试渲染两个 CAShapeLayers 但没有显示任何内容。

-(void) setUpLayers
{
if (!self.blueWave) {

self.blueWave = [self createShapeLayer];

self.blueWave.strokeColor = [UIColor blueColor].CGColor;

self.redWave = [self createShapeLayer];
self.redWave.strokeColor = [UIColor redColor].CGColor;

[self.layer addSublayer:self.blueWave];
[self.layer insertSublayer:self.redWave above:self.blueWave];

[self render];
}
}


- (CAShapeLayer *) createShapeLayer {
CAShapeLayer* layer = [[CAShapeLayer alloc] init];
layer.lineWidth = 2;
layer.fillColor = nil;


return layer;
}

将此代码放在我的自定义 UIView 类中的 layoutSubviewslayoutSublayersOfLayer 中时工作正常,但不在我上面的自定义方法中。知道为什么吗?

最佳答案

我说不出来

[self createShapeLayer] 

正在执行,但请确保将 CAShapeLayer 的框架 设置为类似self.bounds 的内容。如果您使用的是 self.frame,则图层可能只是在屏幕外渲染。

或者,我使用了以下代码,它可能与您想要做的类似

CAShapeLayer *rectangle = [CAShapeLayer layer];
UIBezierPath *rectanglePath=[UIBezierPath bezierPathWithRect:self.bounds];
rectangle.path=rectanglePath.CGPath;
rectangle.fillColor = nil;
rectangle.strokeColor = [UIColor redColor].CGColor;
rectangle.lineWidth = 2.0;
rectangle.opacity = 1.0;
[layer addSublayer:rectangle];

请确保在您创建此 shapeLayer 时,您的边界实际上也具有它的大小。

关于ios - 在自定义 UIView 中渲染 CAShapeLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924380/

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