Pertanyaan Bagaimana cara melakukan animasi balik antara lebih dari dua UIViews?


Saya memiliki kode animasi di kelas yang memperluas UIView:

// Start Animation Block
CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView:[self superview] cache:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:1.0];

//int nextView = currentView + 1;
// Animations
[[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
//And so I would do: [[self superview exchangeSubviewAtIndex:currentView withSubviewAtIndex:nextView];
//Doesn't work because curentView is not global... with each instance of a class it's reset to what it's instanciated to. 
//currentView++;

// Commit Animation Block
[UIView commitAnimations];

Kode animasi ini berfungsi dengan baik untuk dua tampilan. Tetapi saya mencoba melakukan ini untuk banyak pandangan. Saya mencoba dengan menambahkan variabel global (indeks nextview dan indeks currentView), namun ini tidak berfungsi karena setiap kelas tampilan kustom memiliki instance itu sendiri dan variabel ini tidak dibagikan.

Adakah yang tahu bagaimana saya bisa mencapai apa yang ingin saya lakukan?

Terima kasih!

Edit: Saya akan bisa melakukan ini, jika saya bisa menggunakan [superview diri] untuk mengakses indeks dari tinjauan saat ini dan dari pandangan berikutnya. Apakah ada beberapa metode untuk melakukan ini?


5
2017-10-26 21:25


asal


Jawaban:


Apple memiliki tutorial yang bagus pada tampilan transisi sini. Selain cara mereka menerapkannya, Anda juga dapat melihat menggunakan UINavigationController yang mengelola sekelompok tampilan dan transisi di antara mereka.

Pada dasarnya Anda perlu mengelola transisi di superview daripada tampilan - superview dapat mengetahui siapa yang sedang ditampilkan dan siapa yang berikutnya.


5
2017-10-26 23:02



Jika Anda memiliki pointer ke tampilan yang Anda coba untuk beralih antara, cukup panggil -removeFromSuperview pada tampilan "dari" dan -addSubview: (tampilan "ke") pada superview. Transisi tidak bergantung pada panggilan metode tertentu; lebih atau kurang bentuk apa pun dari pendekatan "tukar dua tampilan" akan dianimasikan dengan baik.


2
2017-10-26 21:49



Bagi mereka yang menemukan pertanyaan ini yang mendukung iOS 4.0 dan lebih tinggi, Apple telah menyediakan API bawaan untuk tugas ini:

Lihat: transitionFromView: toView: duration: options: completion:


1
2018-03-04 17:45



Saya pikir Daftar Tertaut pandangan mungkin adalah apa yang harus Anda pikirkan tentang penerapan.


0
2017-10-26 21:35