Yuvarlatılmış bir dikdörtgenin genişliğini canlandırmaya çalışıyorum, sorun daha büyük genişlikten ince genişliğe geçtiğinde, animasyon bir "sapma kolaylığı atlama" yapar. İşte (iOS) Yuvarlatılmış dikdörtgen, shapeLayer ile nasıl animasyon yapılır?
kod:shapeLayer = [CAShapeLayer layer];
shapeRect = CGRectMake(0.0f, 0.0f, 150.0f, 200.0f);
[shapeLayer setBounds:shapeRect];
[shapeLayer setPosition:CGPointMake(iniPosX, 80.0f)];
[shapeLayer setFillColor:[[UIColor blackColor] CGColor]];
[shapeLayer setStrokeColor:[[UIColor clearColor] CGColor]];
[shapeLayer setLineWidth:1.0f];
[shapeLayer setLineJoin:kCALineJoinRound];
[shapeLayer setOpacity:0.2];
path = [UIBezierPath bezierPathWithRoundedRect:shapeRect cornerRadius:15.0];
[shapeLayer setPath:path.CGPath];
[self.layer addSublayer:shapeLayer];
Ve animasyon başlattığınızda:
- (void)adjustSelectorToPosAndSize:(float)posX andWidth:(float)width
{
shapeRect = CGRectMake(0.0f, 0.0f, width, 200.0f);
[shapeLayer setBounds:shapeRect];
[shapeLayer setPosition:CGPointMake(posX, 80.0f)];
path = [UIBezierPath bezierPathWithRoundedRect:shapeRect cornerRadius:15.0];
[shapeLayer setPath:path.CGPath];
}
yanlış yapıyorum? muhtemelen her üç animasyonlar birlikte şunları yapabilirsiniz olmasını istediğim için
CABasicAnimation* anim = [CABasicAnimation animationWithKeyPath: @"path"];
anim.fromValue = (id) fromPath.CGPath;
anim.toValue = (id) toPath.CGPath;
anim.duration = 1.0;
[layer addAnimation: anim forKey: @“resize”];
:
CAShapeLayer yolunun özelliği canlandırılabilir olmasına rağmen, sınırları ve pozisyon gibi pek örtülü yapmaz
Düzeltme Alexis için teşekkürler. – murb83