2015-07-16 3 views
0

Я пытаюсь оживить между двумя видами в полноэкранном режиме (тот же контроллер вида) в быстром использовании с помощью CATransition. Глядя на то, чтобы реплицировать (или приблизиться к) навигационный контроллер, нажать переход. Запуск в проблему, когда view2 (новое представление для представления) скользит правильно, но view1 (вид снизу) исчезает. В принципе, анимированное представление скользит по белому экрану, но я хочу, чтобы он переместился по предыдущему экрану.Swift CATransition Между двумя видами - Слайд-эффект предыдущий экран становится белым

var pushAnimationEffect = CATransition() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    pageToUIView[i] = UIView() 
    view1.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height) 
    view1.center = CGPointMake(screenSize.width/2, screenSize.height/2) 
    view2.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height) 
    view2.center = CGPointMake(screenSize.width/2, screenSize.height/2) 
    view1.layer.addAnimation(pushAnimationEffect, forKey: nil) 
    view2.layer.addAnimation(pushAnimationEffect, forKey: nil) 
    self.view.addSubview(view1) 


    pushAnimationEffect.delegate = self 
    pushAnimationEffect.duration = 0.4 
    pushAnimationEffect.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
} 

func nextPage() { 
    pushAnimationEffect.type = kCATransitionMoveIn 
    pushAnimationEffect.subtype = kCATransitionFromRight 
    self.view.addSubview(view2) 
    view1.removeFromSuperview() 
} 

func prevPage() { 
    pushAnimationEffect.type = kCATransitionMoveIn 
    pushAnimationEffect.subtype = kCATransitionFromLeft 
    self.view.addSubview(view1) 
    view2.removeFromSuperview() 
} 

Упрощенный код, чтобы его было легче читать.

Есть ли лучший способ сделать это? Что-то не так с кодом?

ответ

0

Вам необходимо сделать снимок после завершения анимации. Используйте метод animationDidStop: finished: delegate.