2011-12-20 4 views
0

У меня есть представление с веб-просмотром и UIToolbar.Создайте слайд-анимацию, удалив один UIView, а затем добавьте еще один UIView

Я хочу создать анимацию, которая выполняет переход «kCATransitionFromTop», сначала удалив предыдущий веб-просмотр, а затем добавит новый webView в супервизор. Во время этого перехода я хочу, чтобы панель инструментов оставалась той, на которой она сейчас находится, и НЕ двигается.

Код: Добавить панель

toolbar = [[UIToolbar alloc] init]; 
toolbar.barStyle = UIBarStyleDefault; 
toolbar.tintColor = [UIColor blackColor]; 
[toolbar setFrame:CGRectMake(0, 480 - 88 - 20, 320.0, 44)]; 
//Add the toolbar as a subview to the navigation controller. 
[self.view addSubview:toolbar]; 

Анимация:

UIView *currentView = webView; 
UIView *theWindow = [currentView superview]; 

UIView *newView = [[UIWebView alloc] initWithFrame: CGRectMake(0, 0, 320, self.view.bounds.size.height - self.navigationController.toolbar.frame.size.height)]; 
newView.backgroundColor = [UIColor whiteColor]; 

// remove the current view and replace with new view 
[currentView removeFromSuperview]; 
[theWindow insertSubview:newView belowSubview:toolbar]; 

// set up the animation 
CATransition *animation = [CATransition animation]; 
[animation setDuration:0.4]; 
[animation setType:kCATransitionPush]; 
[animation setSubtype:kCATransitionFromTop]; 
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 

[[theWindow layer] addAnimation:animation forKey:@"PushNextArticleView"]; 

Все, кажется, работать нормально, за исключением панели инструментов перемещается с WebView, а также ... Что я делать неправильно и как я могу решить эту проблему?

ответ

0

Вы хотите использовать только переход к layer из newView?

[[newView layer] addAnimation:animation forKey:@"PushNextArticleView"]; 
+0

Спасибо, что решил проблему; однако между переходом есть черная дыра. Я полагаю, removeFromSuperview не анимирован? – user959974

+0

Исправить. Задайте себя как делегат слоя и реализуйте '-animationDidStop: finished:'. Это будет передано в сообщение при остановке анимации, после чего вы сможете удалить исходный вид из своего супервизора. –

+0

Когда я прокомментирую [currentView removeFromSuperview]; , как-то взгляды отказываются выполнять анимацию сейчас. Кажется, они не похожи на метод insertSubview. Если я расскажу об этом в AddSubview, анимация будет в порядке ..... – user959974

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