Bu kod snippet'inin gerçekleştirdiği gerçek eylem oldukça önemlidir. Animasyon bir görünümden diğerine geçiyor - ilk değiştiriliyor ve ardından hangisinin daha önce görüntülendiğini izlemek için bir boole ayarlanır. Boole tamamlama blokunda ayarlanır. Bu durumda
[UIView transitionFromView:(displayingPrimary ? primaryView : secondaryView)
toView:(displayingPrimary ? secondaryView : primaryView)
duration:1.0
options:(displayingPrimary ? UIViewAnimationOptionTransitionFlipFromRight :
UIViewAnimationOptionTransitionFlipFromLeft)
completion:^(BOOL finished) {
if (finished) {
displayingPrimary = !displayingPrimary;
}
}];
, animasyon (herhangi bir nedenle) eksiksiz, daha sonra fikir alışverişinde edilmemiş etmez ve kesinlikle
displayingPrimary
değerini çevirmek istemiyoruz, çünkü sen' eğer Daha sonra durumunuzun hatalı bir kaydını tutacağım. Bu nedenle, bu durumda
finished
bayrağının işaretlendi.
Bu kılavuzdaki diğer kod örneklerinin çoğunda (tümü olmasa bile) işaretin işaretli olmadığına dikkat edin; çünkü bu durumlarda önemli değildir çünkü (örneğin, ilk önce başka bir animasyonun çalıştırılması, örn. 'un içermediği bazı değerler, animasyonun başarılı bir şekilde tamamlanmasına bağlıdır).
bu yüzden tamamlanma bloğu gibi bitebilir, bool bitmiş olsa bile gerçekte çalışabilir. bu neden olur? Bir "tamamlama" bloğu olduğu için, sadece önceki blok gerçekten tamamlanmışsa koşmazdı. – johnbakers
Bu yöntemlerden biriyle yeni bir animasyon başlatırken, yenisinin ilkini kesmesi için bir seçenek var. Ayrıca, kullanıcı görüşüyle etkileşime izin verme seçeneği de vardır; bu, animasyonu iptal etme fırsatı sunabilir. –
Dokümana göre, geçişiFromView, animasyonu BAŞLANGIÇ'taki görünüme ekleyin ve animasyonun SONRASINDAN süperGörüntüden çıksın. Bu, bittiğinde BOWH fromView'den false ve toView hala var mı demek oluyor? Çünkü benim durumumda, her ikisinin de gittiği vakaları gördüm. –