         contentScrollView.removeFromSuperview()
     }
     
-    internal func positionMenuController() {
-        if let currentViewController = currentViewController,
-            let currentView = currentViewController.view {
-            contentScrollView.contentOffset.x = currentView.frame.minX
-        }
+    // MARK: - Private
+    
+    private func hideVisibleControllersIfNeeded() {
+        guard shouldWaitForLayout() else { return }
+        visibleControllers.forEach { $0.view.alpha = 0 }
+    }
+    
+    private func showVisibleControllersIfNeeded() {
+        guard shouldWaitForLayout() else { return }
+        visibleControllers.forEach { $0.view.alpha = 1 }
+    }
+    
+    private func shouldWaitForLayout() -> Bool {
+        switch options.componentType {
+        case .All(let menuOptions, _):
+            guard case .Infinite = menuOptions.mode else { return false }
+        case .PagingController:
+            guard options.defaultPage > 0 else { return false }
+        default: return false
+        }
+        return true
     }
 }
        super.viewDidAppear(animated)
        
        positionMenuController()
    }
    
    override public func viewDidLayoutSubviews() {

        
        currentPage = options.defaultPage
        currentViewController = controllers[currentPage]
        hideVisibleControllersIfNeeded()
    }
    
    private func setupView() {
        view.translatesAutoresizingMaskIntoConstraints = false
    }
