2010-11-19 24 views
2

görmezden:CATransaction derhal ve bu kod neden çözemiyorum geçiş süresini

CALayer *viewLayer = [aView layer]; 
[CATransaction begin]; 
[CATransaction setValue:[NSNumber numberWithFloat:10.0f] 
       forKey:kCATransactionAnimationDuration]; 
viewLayer.position = CGPointMake(200.0f, 200.0f); 
viewLayer.position = CGPointMake(320.0f, 480.0f); 

[CATransaction commit]; 

hareket görünümü ama hareket animasyon edilmez (hareket hemen gerçekleşir). AView bir UIView içinde bir UIImageView.

cevap

4

Görünümler ile ilişkili katmanlar için örtülü eylemler devre dışı bırakılmıştır. Görünüm her zaman kendi katmanının temsilcisidir ve örtük animasyonları devre dışı bırakmak ve yalnızca bir UIView animasyon bloğunun içine animasyon eklemek için -actionForKey uygular. En iyi bahsiniz, yalnızca açıkça CABasicAnimations kullanmaktır. Bu ilk noktadan diğerine animasyon uygulamak istediğinizi varsayarak,

CALayer *layer = aView.layer; 

layer.position = CGPointMake(320, 480); // final position 
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position"]; 
anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)]; 
anim.toValue = [NSValue valueWithCGPoint:layer.position]; // I believe this line is optional, it should default to current position 
[layer addAnimation:anim forKey:@"position"]; 
İlgili konular