Junior — Middle
Navigation Controller'da ekranlar o'rtasida o'tish paytida o'z animatsion o'tishni qanday amalga oshirish mumkin?
sobes.tech AI
AIdan javob
UINavigationController ichida ekranlar orasida maxsus animatsiya o'tishini amalga oshirish uchun UIViewControllerAnimatedTransitioning va UINavigationControllerDelegate protokollaridan foydalanish kerak.
-
UIViewControllerAnimatedTransitioningprotokolini amalga oshiradigan sinf yarating va animatsiya mantiqini quyidagi metodlarda tavsiflang:transitionDuration(using:)— animatsiya davomiyligianimateTransition(using:)— o'zgarishning o'zi
-
UINavigationController delegatini
UINavigationControllerDelegateni amalga oshiradigan ob'ekt bilan belgilang va metodda:func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? { // sizning animatsiya ob'ektingizni qaytaradi return customAnimator }
Oddiy maxsus animator misoli:
class CustomAnimator: NSObject, UIViewControllerAnimatedTransitioning {
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
return 0.3
}
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
guard let toView = transitionContext.view(forKey: .to) else {
transitionContext.completeTransition(false)
return
}
let container = transitionContext.containerView
toView.alpha = 0
container.addSubview(toView)
UIView.animate(withDuration: transitionDuration(using: transitionContext), animations: {
toView.alpha = 1
}) { finished in
transitionContext.completeTransition(finished)
}
}
}