[英]Rendering a CAShapeLayer within custom UIView
我在自定義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
類的layoutSubviews
或layoutSublayersOfLayer
中,但不在上述自定義方法中時,此代碼可以正常工作。 知道為什么嗎?
我不能說什么
[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的那一刻,您的邊界實際上也具有一定的大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.