2011-12-19 19 views
17

TwUI'da, TUIView numaralı telefondan redraw adı verilen bir yöntem vardır. Görünümü yeniden çizmeye zorlar, ama aynı zamanda eski ve yeni görünüm durumu arasında serbest bir solma animasyonu ile birlikte gelir.UIView'i bir solma animasyonu ile yeniden çizme?

Böyle bir şey normal UIView içinde mümkün olup olmadığını merak ediyorum. Temel olarak, eski ve yeni eyaletler arasındaki bir solgun animasyonla görünümü (setNeedsDisplay) nasıl yeniden çizebilirim?

+0

Bu soru benzer, ancak aradığım değil tamamen ne: http://stackoverflow.com/questions/4730110/i-want-to-animate-in-fact-fade-within-drawrect –

+0

Diğer sorudan farklı olmak için neye ihtiyacınız var? –

+0

Bu soru, yalnızca bir solma yanıtı olan bir görüntüyü güncellememekle birlikte, bir görünümde solmaya cevap veriyor gibi görünüyor. –

cevap

38

UIViewAnimationOptionTransitionCrossDissolve opsiyonu ile +[UIView transitionWithView:duration:options:animations:completion:] ve animasyon bloğu içinde, hemen içeriğini yeniden çizmek için görünümün tabaka zorlar.

[myView setNeedsDisplay]; 
[UIView transitionWithView:myView duration:1 
    options:UIViewAnimationOptionTransitionCrossDissolve 
    animations:^{ 
     [myView.layer displayIfNeeded]; 
    } completion:nil]; 
+1

Adam sensin! Mükemmel çalıştı. Çekirdek Animasyon'umu gerçekten geliştirmeliyim, değil mi? –

+0

Ha ha, belki. WWDC 2011'den * [Çekirdek Animasyon Temelleri] (https://developer.apple.com/videos/wwdc/2011/#core-animation-essentials) * videosundan * çok fazla * öğrendim. Ama sorunuz için de Kod oluşturulmuş bir CALayer'in içerik özelliğini değiştiren ve hangi animasyonu eklediğini gösteren küçük bir test programı yazmak zorunda kaldı. –

+0

Bu bağlantı için teşekkürler, bir süre izleyeceğim. Zarra & Long'un * Çekirdek Animasyon * kitabını da aldım, ama henüz okumadığımı söylemek beni utandırıyor. Okuma molası vakti geldi! :) –

1

Çapraz çözünen UIView geçişi nasıl kullanılır?

[UIView transitionWithView:aView 
        duration:TIME_INTERVAL 
        options:UIViewAnimationOptionTransitionCrossDissolve 
       animations:^{ 
        // Change the view's state 
       } 
       completion:^(BOOL finished) { 
        // Completion block 
       }];