2010-01-22 12 views
5

Bir görüntüye dokunulduğunda animasyonlu büyütme işlemine başlıyorum ve daha sonra serbest bırakıldığında normal boyutuna geri ölçeklendiriyorum. SetAnimationBeginsFromCurrentState'i kullanarak: YES, parmağınızı hareket ettirerek animasyon yaparken, zoom efekti güzel ve pürüzsüz olur. Ancak, ne yapmak istediğim, görüntüye dokunduğunuzda animasyonun sonuna kadar dokunduğunuzda daha büyük boyutta "kilitle", ancak erken bıraktığınız zaman normal olarak geri çekilmesini sağlıyor.iPhone SDK - Bir animasyonun ne zaman biteceğini nasıl anlarım?

Şu anda bir animasyonun çalışıp çalışmadığını veya belirli bir animasyonun tamamlanıp tamamlanmadığını anlamanın bir yolu var mı?

Muhtemelen bunu bir performSelector ile yapabilirim: afterDelay: touches içinde çağrı Başlatılan, animasyonun uzunluğuna eşit bir gecikmeyle ve dokunuşlarEnded çok geçmeden iptal edildikten sonra, bunun en iyi yol olduğunu hayal edemiyorum ...?

cevap

13
- (void)animateStuff { 
    [UIView beginAnimations:@"animationName" context:nil]; 
    [UIView setAnimationDelegate:self]; 
    [self.view doWhatever]; 
    [UIView commitAnimations]; 
} 

- (void)animationDidStop:(NSString *)animationID 
       finished:(NSNumber *)finished 
       context:(void *)context 
{ 
    if ([finished boolValue]) { 
     NSLog(@"Animation Done!"); 
    } 
} 
+1

Bu aslında istediğini yaptım gerçekleştirmek için biraz zaman aldı. zoomDidStop, yakınlaştırmanın nereye gittiğini veya küçülme animasyonunun üstesinden gelip gelmediğini denir. Ancak, bitmiş değeri bize başlangıçta talimat verildiği gibi bitip bitmediğini söyler. Örneğinizde canlandırmaDidStop gövdesini şu şekilde değiştirmeyi önerebilirim: if ([bitmiş boolValue]) { NSLog (@ "Animation Finished!"); } Bu daha sonra mükemmel bir cevaptır :) –

0

"+ (void) setAnimationDidStopSelector: (SEL) seçicinin" istediğini yapması gerektiğini düşünüyorum. Animasyon tamamlandıktan sonra verilen seçiciyi temsilci üzerinde arayacaktır.

1

başka olasılık:

[UIView animateWithDuration:0.3 animations:^{ 

     myView.transform = CGAffineTransformMakeRotation(M_PI); 

}completion:^(BOOL finished) { 

     NSLog(@"Animation complete!"); 
}]; 
İlgili konular