2017-02-03 74 views
1

我試圖以模擬呈現/解僱UIViewController s的方式自定義基於推/彈出導航的UINavigationController的過渡動畫。流行UIViewController與自定義「解僱模態」般的動畫

下面是標準的動畫的示例:

  • 綠色屏幕,
  • 本模態橙色屏幕,
  • 解僱模態橙色屏幕和
  • 彈出回到青色屏幕。

enter image description here

我能獲得同樣的實現自定義的垂直UIStoryboardSegue推動畫「從底部向上滑動」。

難的部分是實現對應的流行動畫。我能夠得到的最好的是以下幾點:

enter image description here

這裏有同樣的效果慢動作版本:

enter image description here

從前面的動畫你可以欣賞它不同於標準解除模式動畫主要是因爲Bubblegum屏幕不應該從上到下滑動,但應該已經存在於海軍屏幕後面流行。

這是我用來創建假解僱模態動畫代碼:

class FakeModalNavigationController: UINavigationController { 

    fileprivate static let unwindToBubblegumScreenSegueID = "unwindToBubblegumScreenSegueID" 

    override func unwind(for unwindSegue: UIStoryboardSegue, towardsViewController subsequentVC: UIViewController) { 
     if unwindSegue.identifier == type(of: self).unwindToBubblegumScreenSegueID { 
      popViewControllerAnimatedFromBottom(subsequentVC) 
     } 
    } 

    fileprivate func popViewControllerAnimatedFromBottom(_ viewControllerToPop: UIViewController) { 
     let transition = CATransition() 
     transition.duration = 0.25 
     transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
     transition.type = kCATransitionPush 
     transition.subtype = kCATransitionFromBottom 
     view.layer.add(transition, forKey: nil) 
     popViewController(animated: false) 
    } 
} 

預先感謝答案和評論!

回答

2

嘗試使用:

transition.type = kCATransitionReveal 
transition.subtype = kCATransitionFromBottom 
+0

謝謝,這是遠遠比以前好多了;) 不幸的是,當我執行假駁回海軍屏的模式,仍然有超過泡泡糖屏幕黑暗陰影效果。你知道如何刪除它嗎? – horothesun

相關問題