class Tvc: UIViewController{
let a = Tvc1()
let b = Tvc2()
var i = 0
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.grayColor()
self.addChildViewController(a)
self.view.addSubview(a.view)
a.didMoveToParentViewController(self)
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
a.willMoveToParentViewController(nil)
self.addChildViewController(b)
i = 1
self.transitionFromViewController(
a,
toViewController: b,
duration: 3,
options: UIViewAnimationOptions.TransitionCrossDissolve,
animations: {
self.setNeedsStatusBarAppearanceUpdate()
},
completion:{ _ in
self.a.view.removeFromSuperview()
self.view.addSubview(self.b.view)
self.b.didMoveToParentViewController(self)
self.a.removeFromParentViewController()
}
)
}
override func childViewControllerForStatusBarHidden() -> UIViewController? {
if i == 0{
return a
}
return b
}
}
class Tvc1: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.orangeColor()
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
class Tvc2: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.redColor()
}
override func prefersStatusBarHidden() -> Bool {
return false
}
}