0
私はカスタム水平スライドUINavigationControllerトランジションを作成しようとしています。プッシュアニメーションはうまくいくようです。しかし、私はポップしようとしている(と横スライドバックすることを持っている)だけ空白の画面だとアニメーション時間後にビューは、あなたのビューで既存の変換をリセットする必要があるようにそれが必要カスタム水平ポップトランジションが正常に機能しない
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let container = transitionContext.containerView
let fromView = transitionContext.view(forKey: UITransitionContextViewKey.from)!
let toView = transitionContext.view(forKey: UITransitionContextViewKey.to)!
let offScreenRight = CGAffineTransform(translationX: container.frame.width, y: 0)
let offScreenLeft = CGAffineTransform(translationX: -container.frame.width, y: 0)
fromView.frame = transitionContext.initialFrame(for: transitionContext.viewController(forKey: .from)!)
toView.frame = transitionContext.finalFrame(for: transitionContext.viewController(forKey: .to)!)
toView.transform = isPresenting == true ? offScreenRight : offScreenLeft
container.addSubview(toView)
container.addSubview(fromView)
let duration = self.transitionDuration(using: transitionContext)
UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.8, options: [], animations: {
fromView.transform = self.isPresenting == true ? offScreenLeft : offScreenRight
toView.transform = .identity
}, completion: { finished in
toView.frame = transitionContext.initialFrame(for: transitionContext.viewController(forKey: .from)!)
transitionContext.completeTransition(true)
})
}
はい、そうです。それはそれをした!ありがとう!私は、それらのビューは、最初から変換からきれいであると思った、heh :) – HelloimDarius