簡體   English   中英

CAShapeLayer子視圖無法正確設置動畫

[英]CAShapeLayer subview not animating correctly

我正在嘗試將CALayer用於動畫。 我要的是圓萎縮,反彈回來(工作)和描邊圈擴大並淡出這樣 不幸的是,subLayer上的第二個環沒有動畫。 我不知道為什么。

我這樣設置圖層

- (void)setLayerProperties {
    //The view’s Core Animation layer used for rendering.
    CAShapeLayer *layer = (CAShapeLayer *)self.layer;

    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)
                                                      byRoundingCorners:UIRectCornerAllCorners
                                                            cornerRadii:self.frame.size];
    layer.path = bezierPath.CGPath;
    layer.fillColor = _Color.CGColor;

    rippleLayer = [[CAShapeLayer alloc] init]; // update from Andrea's answer
    layer.path = bezierPath.CGPath;
    layer.strokeColor = [UIColor blueColor].CGColor;
    [layer addSublayer:rippleLayer];
}

然后使用這些功能制作動畫

- (void)pop{
    CABasicAnimation *animation = [self animationWithKeyPath:@"transform.scale"];
    [animation setFromValue:[NSNumber numberWithFloat:1.0f]];
    [animation setToValue:[NSNumber numberWithFloat:0.8f]];
    [animation setRemovedOnCompletion:YES];
    [animation setDuration:0.15];
    [animation setAutoreverses:YES];

    [self.layer addAnimation:animation forKey:animation.keyPath];

    rippleLayer.anchorPoint = CGPointMake(1, 1);
    CABasicAnimation *scale = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    [scale setFromValue:[NSNumber numberWithFloat:1.0f]];
    [scale setToValue:[NSNumber numberWithFloat:2.0f]];
    [scale setRepeatCount:1];
    [scale setDuration:1.0f];
    //r[scale setRemovedOnCompletion:YES];
    [scale setFillMode:kCAFillModeForwards];

    [rippleLayer addAnimation:scale forKey:scale.keyPath];
}

似乎您是將波紋層創建為普通的CALayer,而不是CAShapeLayer。 據我所知,path不是CALayer的屬性,並且您將path設置為與以前相同的層。 因此,您要添加一個根本沒有內容的簡單圖層。

暫無
暫無

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

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