2016-04-13 65 views
0

Gezinme üzerinde geçiş animasyonu yapmak istiyorum Denetleyicinin itmesi ve çıkarması. Ama gerçekten garip çalışıyor. 0/'un 1/5 katı gibi olması gerektiği gibi kaybolur ancak toViewController kaybolmaz, sadece görünür. Kısıtlamalar bazen garip olur. Standart geçişi kullanırsam her şey yolunda.UIViewControllerAnimatedTransitioning düzgün çalışmıyor

class TMFadeAnimator: NSObject, UIViewControllerAnimatedTransitioning { 

    func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval { 
     return 0.5 
    } 

    func animateTransition(transitionContext: UIViewControllerContextTransitioning) { 

     let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) 
     let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) 
     toViewController?.beginAppearanceTransition(true, animated: true) 
     fromViewController?.beginAppearanceTransition(false, animated: true) 

     transitionContext.containerView()!.addSubview(toViewController!.view) 


     toViewController!.view.alpha = 0.0 

     UIView.animateWithDuration(self.transitionDuration(transitionContext), animations: { 
      toViewController!.view.alpha = 1.0 
      fromViewController!.view.alpha = 0.0 
     }) { (finished) in 
      toViewController?.endAppearanceTransition() 
      fromViewController?.endAppearanceTransition() 
      transitionContext.completeTransition(finished) 
     } 
    } 
} 
+0

Bu bir çözüm değil, benim geçiş bağlamımda viewForKey kullanarak görünüm denetleyicileri değil görünümleri ayıkladım. Bunun bir fark yaratacağından kuşku duyuyorum, ama sanırım görüntü denetçisinin görüşünü nasıl değiştirebileceğine dair sınırlamaları olabilir. Ayrıca başlangıç ​​/ bitiş görüntüsü geçişini de aramıyorum .... bu tür özel animasyonlar için yapmanız gerekenleri birazcık geride bırakabilirim. –

+0

@ A'saDickens beklediğiniz gibi herhangi bir fark yaratmadı –

+0

Neler olduğunu bir gif yapmak mümkün mü? Gerçekten basit bir uygulama olan licecap kullanıyorum. Eğer yapamazsan sorun yok. Xs –

cevap

0

Garip sorunlar tanımlandı sadece toViewController ve fromViewController sonra toViewController?.view.frame = fromViewController!.view.frame koyarak çözüldü: İşte benim Geçiş sürecinin sınıftır. (Bunu bulmak için Aa Dickens'e teşekkürler). İşte bu son kod olan

class TMFadeAnimator: NSObject, UIViewControllerAnimatedTransitioning { 

    func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval { 
     return 0.5 
    } 

    func animateTransition(transitionContext: UIViewControllerContextTransitioning) { 

     let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) 
     let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) 

     toViewController?.view.frame = fromViewController!.view.frame 

     toViewController?.beginAppearanceTransition(true, animated: true) 
     fromViewController?.beginAppearanceTransition(false, animated: true) 

     transitionContext.containerView()!.addSubview(toViewController!.view) 


     toViewController!.view.alpha = 0.0 

     UIView.animateWithDuration(self.transitionDuration(transitionContext), animations: { 
      toViewController!.view.alpha = 1.0 
      fromViewController!.view.alpha = 0.0 
     }) { (finished) in 
      toViewController?.endAppearanceTransition() 
      fromViewController?.endAppearanceTransition() 
      transitionContext.completeTransition(finished) 
     } 
    } 
}