Skip to content
Permalink
Branch: master
Find file Copy path
48 lines (41 sloc) 1.46 KB
//
// UIWindowExtensions.swift
// SwifterSwift
//
// Created by Omar Albeik on 6/2/18.
// Copyright © 2018 SwifterSwift
//
#if canImport(UIKit) && os(iOS)
import UIKit
// MARK: - Methods
public extension UIWindow {
/// SwifterSwift: Switch current root view controller with a new view controller.
///
/// - Parameters:
/// - viewController: new view controller.
/// - animated: set to true to animate view controller change (default is true).
/// - duration: animation duration in seconds (default is 0.5).
/// - options: animation options (default is .transitionFlipFromRight).
/// - completion: optional completion handler called after view controller is changed.
public func switchRootViewController(
to viewController: UIViewController,
animated: Bool = true,
duration: TimeInterval = 0.5,
options: UIView.AnimationOptions = .transitionFlipFromRight,
_ completion: (() -> Void)? = nil) {
guard animated else {
rootViewController = viewController
completion?()
return
}
UIView.transition(with: self, duration: duration, options: options, animations: {
let oldState = UIView.areAnimationsEnabled
UIView.setAnimationsEnabled(false)
self.rootViewController = viewController
UIView.setAnimationsEnabled(oldState)
}, completion: { _ in
completion?()
})
}
}
#endif
You can’t perform that action at this time.