Sobes.tech
Junior — Middle

Navigation Controller'da ekranlar arasında geçiş yaparken kendi animasyon geçişinizi nasıl gerçekleştirebilirsiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

UINavigationController içinde ekranlar arasında özel bir animasyon geçişi uygulamak için UIViewControllerAnimatedTransitioning ve UINavigationControllerDelegate protokollerini kullanmalısınız.

  1. UIViewControllerAnimatedTransitioning protokolünü uygulayan bir sınıf oluşturun ve animasyon mantığını şu metodlarda tanımlayın:

    • transitionDuration(using:) — animasyon süresi
    • animateTransition(using:) — geçişin kendisi
  2. UINavigationController'ın delegate'ini UINavigationControllerDelegate'ı uygulayan bir nesne yapın ve şu metodda:

    func navigationController(_ navigationController: UINavigationController, 
                              animationControllerFor operation: UINavigationController.Operation, 
                              from fromVC: UIViewController, 
                              to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        // animasyon nesnenizi döndürün
        return customAnimator
    }
    

Basit bir özel animator örneği:

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)
        }
    }
}