1
我試圖以模擬呈現/解僱UIViewController
s的方式自定義基於推/彈出導航的UINavigationController
的過渡動畫。流行UIViewController與自定義「解僱模態」般的動畫
下面是標準的動畫的示例:
- 推綠色屏幕,
- 本模態橙色屏幕,
- 解僱模態橙色屏幕和
- 彈出回到青色屏幕。
我能獲得同樣的實現自定義的垂直UIStoryboardSegue
推動畫「從底部向上滑動」。
難的部分是實現對應的流行動畫。我能夠得到的最好的是以下幾點:
這裏有同樣的效果慢動作版本:
從前面的動畫你可以欣賞它不同於標準解除模式動畫主要是因爲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)
}
}
預先感謝答案和評論!
謝謝,這是遠遠比以前好多了;) 不幸的是,當我執行假駁回海軍屏的模式,仍然有超過泡泡糖屏幕黑暗陰影效果。你知道如何刪除它嗎? – horothesun