簡體   English   中英

在自定義UIView中渲染CAShapeLayer

[英]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類的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的那一刻,您的邊界實際上也具有一定的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM