كيف يمكنني سلسلة لرسوم متحركة على نطاق ومع UIImageView فون؟
سؤال
وأنا أحاول أن حجم صورة لأسفل، تغيير الصورة، ثم توسيع نطاق إعادته.
CABasicAnimation* shrink = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
shrink.toValue = [NSNumber numberWithDouble:0];
shrink.duration = 1;
shrink.delegate = self;
[myImageView.layer addAnimation:shrink forKey:@"shrink"];
ويجعل يتقلص، ثم عندما يكمل، وتغيير الصورة، وبدء ينمو:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
myImageView.image = [images objectAtIndex:image];
CABasicAnimation* grow = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
grow.toValue = CGAffineTransformMakeScale(1,1);
grow.delegate = self;
grow.duration = 1;
[myImageView.layer addAnimation:grow forKey:@"grow"];
}
وهذا يعمل كبيرة على جهاز محاكاة، ولكن على الجهاز، عند اكتمال يتقلص، وأحصل على ومضة من حجم كامل، الصورة القديمة، ثم يبدأ الرسوم المتحركة تنمو مع صورة جديدة.
وأي فكرة عن كيفية التخلص من ذلك فلاش؟
و(لقد حاولت "removedOnCompletion = NO؛". وحاول وضع affineTransform يساوي حجم تقليصها بعد الانتهاء الأول، ولكن لم يكن لدينا الكثير من الحظ)
وأي نصائح تقدير.
وكيلو بايت
وتحرير:
وممتاز! تحديد ما يلي:
shrink.fillMode = kCAFillModeForwards;
shrink.removedOnCompletion = NO;
وإزالتها وامض. شكرا، بن!
المحلول
وحاول وضع fillMode
الرسوم المتحركة الخاصة بك لkCAFillModeForwards
. وينبغي أن يترك هذا البند كما كان في نهاية الحركة، بدلا من ذي قبل.
نصائح أخرى
ولقد كان لي نفس المشكلة عندما حاولت خلق CAAnimation آخر في طريقة animationDidStop. أقترح استخدام CAKeyframeAnimation.