2008-10-26 3 views
5

У меня есть анимации кода в классе, который расширяет UIView:Как сделать флип-анимацию между более чем двумя UIViews?

// 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]; 

Эта анимация код отлично работает для двух точек зрения. Но я пытаюсь сделать это для многих просмотров. Я попытался добавить глобальную переменную (индекс nextview и индекс currentView), однако это не сработает, поскольку каждый пользовательский класс представления имеет свой собственный экземпляр, и эти переменные не используются совместно.

Кто-нибудь знает, как я могу выполнить то, что я хочу сделать?

Спасибо!

Редактировать: Я мог бы сделать это, если бы мог использовать [self superview] для доступа к индексу текущего вида и nextview. Есть ли методы для этого?

ответ

0

Я думаю, что связанный список взглядов может быть тем, что вы должны думать о внедрении.

+0

У меня есть массив представлений, которые я создаю в appdelegate, и я добавляю другой массив в каждый контроллер представления табуляции. Затем контроллер использует этот массив для создания uiviews с анимацией для переключения между ними. У меня возникают проблемы с переключением анимации ... – rksprst 2008-10-26 21:45:14

2

Если у вас есть указатели на представления, которые вы пытаетесь переключаться между ними, просто вызовите -removeFromSuperview в представлении «from» и -addSubview: («to» view) в супервизоре. Переход не зависит от какого-либо конкретного вызова метода; более или менее любая форма подхода «swap two views» будет анимирована должным образом.

5

Apple имеет довольно хорошее руководство по просмотру переходов here. Помимо того, как они реализуют их, вы также можете использовать UINavigationController, который управляет кучей представлений и переходит между ними.

По существу вам необходимо управлять переходом в супервизоре, а не в представлении - супервизор может узнать, кто он сейчас отображает, и кто следующий.

Смежные вопросы