İçeriğe geç

UIWindow Root transition işlemi

Merhabalar bu yazımda sizlere iOS uygulamalarınızda UIWindow rootViewController belirlemek ve geçiş işlemlerinizde animasyon ekleme olayını nasıl gerçekleştirebileceğinizi göstereceğim.

Root değişme işlemini en çok login, register sayfalarından sonra ana sayfaya geçişte veya farklı bir bilgi alma ekranından ana ekrana geçiş senaryolarında kullanıyoruz. Geçiş işlemini yaparken direkt olarak UIWindow.rootViewController‘ e atama yaparsanız animasyon olmadan hızlı bir şekilde geçiş olayı gerçekleşir. Animasyon eklemek için UIView.transition kullanacağız.

Bu işlem için kullanışlı bir extension yazıp, uygulama içerisinde gerekli yerlerde kullanalım.

extension UIWindow {
    func switchRoot(to viewController: UIViewController,animated: Bool ,duration: TimeInterval,options: UIView.AnimationOptions, _ completion: (() -> Void)? = nil) {
        
        guard animated else {
            rootViewController = viewController
            completion?()
            return
        }
        
        UIView.transition(with: self, duration: duration, options: options, animations: {
            let animationState = UIView.areAnimationsEnabled
            UIView.setAnimationsEnabled(false)
            self.rootViewController = viewController
            UIView.setAnimationsEnabled(animationState)
        }, completion: { _ in
            completion?()
        })
    }
}

Aşağıda basit bir şekilde fonksiyonun kullanımını görebilirsiniz.

let aDelegate = UIApplication.shared.delegate as! AppDelegate
        let bundleVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
        aDelegate.window?.switchRoot(to: bundleVC, animated: true, duration: 2, options: .transitionFlipFromLeft, {
            print("Boom 🎉")
        })

 

 

Tarih:iOS

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Copyright © 2020 Kenan Atmaca