Bir daireyi bir kareye dönüştürmeye çalışıyorum ya da tam tersi var. Ancak beklendiği gibi animasyon yapmaz. G/bir karenin bütün köşeler animasyon olmak ister aynı anda morphed ama ne olsun şudur olacaktır:iOS'tan orta/kare biçime kadar animate/morph şekil
Ben şekil özelliğine animasyon için CAShapeLayer
ve CABasicAnimation
kullanın. vb, benim görünümün tabakaların birine daire yolunu uygulamak
- (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;
}
dolgu ayarlayın: İşte
- (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;
}
kare yol: Burada
Ben daire yolu oluşturmak nasıl Mükemmel çizer. Sonra gestureRecognizer seçicisi içinde oluşturup aşağıdaki animasyonu çalıştırın:
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"];
Eğer buradan öneri takip circlePathWithCenter:radius:
ve squarePathWithCenter:size:
fark gibi (segmentler ve kontrol noktalarının aynı sayıda olması): Smooth shape shift animation
animasyon yukarıdan görevde sonra daha iyi görünüyor ama yine de ben basit CALayer
ile bunu biliyor elde etmek :(
istediğiniz biri değil ve daha sonra bir set kare/dikdörtgen bir daire yapmak için cornerRadius
uygun düzey ve cornerRadius
özelliği bundan sonra daire için kare değiştirmek için ama CAShapeLayer
ve path
animasyon ile yapmak bile mümkün olsa bile son derece merak ediyorum.
Yardım için şimdiden teşekkür ederiz!
görünüyor/questions/17429797/smooth-shape-shift-animation], animasyonlara dayanarak - –
hmm'ye bir göz atmaya değer olabilir. Bu olabilir - Soruyu biliyorum ve kabul edilen yanıttan öneriyi takip ettim ama yine de jus öldü benim için bitir. Animasyonumun biraz daha iyi olduğu için yardımcı olduğunu düşündüğüm aynı sayıda segment/kontrol noktam var, oradan bir tane var ama eşiğin nasıl geliştirileceğine dair hiçbir fikri yok. – fgeorgiew