2015-03-05 4 views
1

Нажав кнопку, я поместил TRANSPARENT View в текущий вид. Для прозрачного вида, чтобы покрыть весь экран, включая навигационную панель, я закодирован так:Удаление Subview после завершения анимации - переход

[AppDelegate.window.rootViewController.view addSubview:coverView]; 

В действии щелчка кнопки, я поставил некоторую анимации код.

Теперь на кнопку мыши в прозрачном View, я поставил следующий код для выполнения скользящего эффекта перехода:

CATransition *animation = [CATransition animation]; 
    [animation setDuration:0.8]; 
    [animation setType:kCATransitionPush]; 
    [animation setSubtype:kCATransitionFromLeft]; 
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
    [[TransparentView.view layer] addAnimation:animation forKey:nil]; 
    [TransparentView removefromSuperview]; 

Мне нужен прозрачный вид скользить влево/вправо (другими словами. . Исключение TransparentView из представления), а MainView должен выглядеть как раньше.

Но его не работает .. Может ли кто-нибудь помочь в этом?

+0

Вместо слоя [TransparentView.view] используйте [слой self.view], а затем проверьте. – IOSCODER

+0

Я проверил его уже. Но главный вид получает эффект анимации. Мне нужно, чтобы сделать прозрачный вид и сделать вид сверху видимым. Когда я помещаю [слой self.view] ....., сам основной вид слайдов и отображается основной вид. –

ответ

0
[CATransaction begin]; 
CATransition *animation = [CATransition animation]; 
[CATransaction setCompletionBlock:^{ 
    [TransparentView removefromSuperview]; 
}]; 
[animation setDuration:0.8]; 
[animation setType:kCATransitionPush]; 
[animation setSubtype:kCATransitionFromLeft]; 
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
[[TransparentView.view layer] addAnimation:animation forKey:nil]; 
[CATransaction commit]; 
+0

Прозрачный вид дважды отображается. Затем я добавил ------------ ---> animation.repeatCount = 1; Он также не работает –

1

arturdev частично исправно !! Теперь он делает это - -> Добавление анимации CATransition слева направо в течение 0,8 секунды, после чего представление все еще существует. -> затем удалите его из супервизора.

Вместо этого скройте прозрачный вид, изменив его рамку (здесь я перемещаю координату x по ширине кадра). А затем добавьте переход.

[coverView setFrame:CGRectMake([coverView frame].size.width, 0, coverView.frame.size.width, coverView.frame.size.height)]; 
[CATransaction begin]; 
CATransition *animation = [CATransition animation]; 
[CATransaction setCompletionBlock:^{ 
    [coverView removeFromSuperview]; 
}]; 
[animation setDuration:0.8]; 
[animation setType:kCATransitionPush]; 
[animation setSubtype:kCATransitionFromLeft]; 
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; 
[[coverView layer] addAnimation:animation forKey:nil]; 
[CATransaction commit]; 
Смежные вопросы