         }
     }
 
+    // MARK: private methods
+
+    private func isSystemInCallBarVisible() -> Bool {
+        let statusBarFrame = UIApplication.sharedApplication().statusBarFrame
+        return statusBarFrame.height > 20
+    }
+
+    // MARK: LifeCycle
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+
+        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.dynamicType.statusBarFrameWillChange), name: UIApplicationWillChangeStatusBarFrameNotification, object: nil)
+
+        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.dynamicType.statusBarFrameDidChange), name: UIApplicationDidChangeStatusBarFrameNotification, object: nil)
+    }
+
+    deinit {
+        NSNotificationCenter.defaultCenter().removeObserver(self)
+    }
+
+    // MARK: Segue
+
     override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
         super.prepareForSegue(segue, sender: sender)
 

            let dest = segue.destinationViewController as? UITabBarController
            let firstVCNavC = dest?.viewControllers?.first as? UINavigationController
            let firstVC = firstVCNavC?.topViewController as? FirstViewController
            firstVC?.barClosure = { [weak self] show in
                self?.isBarVisible = show
            }
            let secondVCNavC = dest?.viewControllers?.last as? UINavigationController
            let secondVC = secondVCNavC?.topViewController as? SecondViewController
            secondVC?.barClosure = { [weak self] show in
                self?.isBarVisible = show
            }
        }
    }
}

        didSet {
            guard isBarVisible != oldValue else { return }

            self.callBarView.hidden = !self.isBarVisible || self.isSystemInCallBarVisible()

            barHeightConstraint.constant = isBarVisible ? 40 : 0
            topContainerConstraint.constant = isBarVisible && !self.isSystemInCallBarVisible() ? 20 : 0
            
            UIView.transitionWithView(self.callBarView, duration: 0.3, options: [UIViewAnimationOptions.TransitionFlipFromTop, UIViewAnimationOptions.LayoutSubviews, UIViewAnimationOptions.CurveEaseOut], animations: { self.view.layoutIfNeeded() }) { _ in
                if !self.isBarVisible {
