我嘗試將圓形更改爲正方形,反之亦然,並且我快到了。然而,它並不像預期那樣動畫。我想一個正方形的各個角落進行動畫/在同一時間演變,但我得到的是以下幾點:從圓形到方形的iOS動畫/變形形狀
我以動畫形狀財產使用CAShapeLayer
和CABasicAnimation
。
這裏是我創建的圈子路徑:
- (UIBezierPath *)circlePathWithCenter:(CGPoint)center radius:(CGFloat)radius
{
UIBezierPath *circlePath = [UIBezierPath bezierPath];
[circlePath addArcWithCenter:center radius:radius startAngle:0 endAngle:M_PI/2 clockwise:YES];
[circlePath addArcWithCenter:center radius:radius startAngle:M_PI/2 endAngle:M_PI clockwise:YES];
[circlePath addArcWithCenter:center radius:radius startAngle:M_PI endAngle:3*M_PI/2 clockwise:YES];
[circlePath addArcWithCenter:center radius:radius startAngle:3*M_PI/2 endAngle:M_PI clockwise:YES];
[circlePath closePath];
return circlePath;
}
下面是方形路徑:
- (UIBezierPath *)squarePathWithCenter:(CGPoint)center size:(CGFloat)size
{
CGFloat startX = center.x-size/2;
CGFloat startY = center.y-size/2;
UIBezierPath *squarePath = [UIBezierPath bezierPath];
[squarePath moveToPoint:CGPointMake(startX, startY)];
[squarePath addLineToPoint:CGPointMake(startX+size, startY)];
[squarePath addLineToPoint:CGPointMake(startX+size, startY+size)];
[squarePath addLineToPoint:CGPointMake(startX, startY+size)];
[squarePath closePath];
return squarePath;
}
我申請的圓圈路徑我的看法的一層,設置填充等。它完美地繪製。 然後在我gestureRecognizer選擇創建並運行下面的動畫:
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];
animation.duration = 1;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
animation.fromValue = (__bridge id)(self.stateLayer.path);
animation.toValue = (__bridge id)(self.stopPath.CGPath);
self.stateLayer.path = self.stopPath.CGPath;
[self.stateLayer addAnimation:animation forKey:@"animatePath"];
正如你可以在circlePathWithCenter:radius:
和squarePathWithCenter:size:
我按照建議從這裏看到(有相同數量的段和控制點): Smooth shape shift animation
動畫看起來更好,然後從上面的文章,但它仍然不是一個我想要達到:(
我知道,我可以用簡單的CALayer
做到這一點,然後設置一個cornerRadius
的適當等級使圓形超出正方形/矩形,之後使用動畫cornerRadius
屬性將其從圓形更改爲方形,但如果甚至可以使用CAShapeLayer
和path
動畫完成此操作,我仍然非常好奇。
在此先感謝您的幫助!
它看起來像你有同樣的問題,因爲這問題[http://stackoverflow.com/questions/17429797/smooth-shape-shift-animation],基於動畫 - 可能值得一看 –
嗯..它可能是 - 我知道這個問題,並遵循接受的答案的建議,但我仍然是一個死亡爲我結束。我有相同數量的細分/控制點,我認爲它們有幫助,因爲我的動畫形狀稍好一些,但是從那裏開始的動畫卻沒有線索如何改進。 – fgeorgiew