私はナビゲーションコントローラのトランジションのスライドアニメーションを作成しようとしています。たとえば、VCをプッシュすると、プレゼンテーションと提示されたVCはUIPageViewController
のように遷移します。ここでカスタムUINavigationControllerアニメーションが終了したときに応答しない
は、私がこれまでにコード化されたものです:
guard let fromView = transitionContext.view(forKey: .from),
let toView = transitionContext.view(forKey: .to)
else { return }
let containerView = transitionContext.containerView
toView.frame = CGRect(x: -toViewFrameHorizationtalPosition,
y: 64,
width: UIScreen.main.bounds.width,
height: UIScreen.main.bounds.height)
containerView.addSubview(fromView)
containerView.addSubview(toView)
UIView.animate(withDuration: transitionDuration(using: transitionContext),
delay: 0,
options: .curveEaseInOut,
animations: {
containerView.frame.origin.x = self.toViewFrameHorizationtalPosition
}) { completed in
transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
}
アニメーションはビューが応答しなくなった実行後の遷移アニメーションが、私はそれがあることを期待通りに起こったがたとえ様々な試みに反しています。タッチイベントは認識されません。
ナビゲーションバーは正常に機能しますが、最初のビューに切り替えると、そのビューも応答しなくなります。
私はこの問題を発見することはできませんが、これについて多くのことを読んだことがありますが、しばらくの間これを苦労しています。何か案は?
まず、 'fromView'はすでに' containerView'に入っているはずなので、再度サブビューを追加する必要はありません。次に、 'containerView'のフレームを変更しているように見えますが、本当に' fromView'や 'toView'(あるいはその両方)のフレームを' containerView'の中で変更したくないのですか? – DonMag