         }
         var _horizontal: NSLayoutConstraint
         if shows {
-            _horizontal = _navigationBackItem._view.leadingAnchor.constraint(equalTo: _containerView.leadingAnchor)
+            _horizontal = _navigationBackItem.underlyingView.leadingAnchor.constraint(equalTo: _containerView.leadingAnchor)
         } else {
-            _horizontal = _navigationBackItem._view.trailingAnchor.constraint(equalTo: _containerView.leadingAnchor)
+            _horizontal = _navigationBackItem.underlyingView.trailingAnchor.constraint(equalTo: _containerView.leadingAnchor)
         }
         _horizontal.isActive = true
         _horizontalConstraintOfBackItem = _horizontal
         
         if shows {
-            _navigationBackItem._view.isHidden = false
+            _navigationBackItem.underlyingView.isHidden = false
         }
         if animated {
             UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 1.0, options: [], animations: { [unowned self] in
                 self.layoutIfNeeded()
                 }, completion: { [unowned self] finished in
                 if finished && !shows {
-                    self._navigationBackItem._view.isHidden = true
-                    self._navigationBackItem._view.transform = .identity
+                    self._navigationBackItem.underlyingView.isHidden = true
+                    self._navigationBackItem.underlyingView.transform = .identity
                 }
             })
         }
     }
-    
-    private func _setupNavigationItemView(containerView: UIView? = nil, scrollView: UIScrollView? = nil, itemView: UIView? = nil, transition: Bool = false) {
+    /// Constraint views of navigation items.
+    private func _constraintViewsOfNavigationItems(containerView: UIView? = nil, scrollView: UIScrollView? = nil, itemView: UIView? = nil, transition: Bool = false) {
         let itemsContainerView = containerView ?? _itemsContainerView
-        let itemsScrollView = scrollView ?? _itemsScrollView
-        let navigationItemView = itemView ?? _navigationItemView
+        let itemsScrollView    = scrollView    ?? _itemsScrollView
+        let navigationItemView = itemView      ?? _navigationItemView
         
         itemsContainerView.addSubview(itemsScrollView)
         itemsScrollView.addSubview(navigationItemView)
         
-        itemsContainerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[itemsScrollView]|", options: [], metrics: nil, views: ["itemsScrollView":itemsScrollView]))
-        itemsContainerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[itemsScrollView]|", options: [], metrics: nil, views: ["itemsScrollView":itemsScrollView]))
-        itemsScrollView.widthAnchor.constraint(equalTo: itemsContainerView.widthAnchor).isActive = true
-        itemsScrollView.heightAnchor.constraint(equalTo: itemsContainerView.heightAnchor).isActive = true
-        
-        itemsScrollView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[navigationItemView]|", options: [], metrics: nil, views: ["navigationItemView":navigationItemView]))
-        itemsScrollView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[navigationItemView]|", options: [], metrics: nil, views: ["navigationItemView":navigationItemView]))
-        
-        let width = navigationItemView.widthAnchor.constraint(equalToConstant: 0.0)
-        width.isActive = true
-        if transition {
-            _widthOfTransitionNavigationItemViewForZeroContent = width
-        } else {
-            _widthOfNavigationItemViewForZeroContent = width
-        }
-        
-        let widthOfContainer = itemsContainerView.widthAnchor.constraint(equalTo: navigationItemView.widthAnchor)
-        widthOfContainer.priority = UILayoutPriorityDefaultHigh
-        widthOfContainer.isActive = true
-        navigationItemView.heightAnchor.constraint(equalTo: itemsContainerView.heightAnchor).isActive = true
+        itemsScrollView.leadingAnchor.constraint(equalTo : itemsContainerView.leadingAnchor).isActive  = true
+        itemsScrollView.trailingAnchor.constraint(equalTo: itemsContainerView.trailingAnchor).isActive = true
+        itemsScrollView.topAnchor.constraint(equalTo     : itemsContainerView.topAnchor).isActive      = true
+        itemsScrollView.bottomAnchor.constraint(equalTo  : itemsContainerView.bottomAnchor).isActive   = true
+        itemsScrollView.widthAnchor.constraint(equalTo   : itemsContainerView.widthAnchor).isActive    = true
+        itemsScrollView.heightAnchor.constraint(equalTo  : itemsContainerView.heightAnchor).isActive   = true
+        
+        navigationItemView.leadingAnchor.constraint(equalTo : itemsScrollView.leadingAnchor).isActive  = true
+        navigationItemView.trailingAnchor.constraint(equalTo: itemsScrollView.trailingAnchor).isActive = true
+        navigationItemView.topAnchor.constraint(equalTo     : itemsScrollView.topAnchor).isActive      = true
+        navigationItemView.bottomAnchor.constraint(equalTo  : itemsScrollView.bottomAnchor).isActive   = true
+        
+        navigationItemView.heightAnchor.constraint(equalTo : itemsContainerView.heightAnchor).isActive = true
+        
+        let widthz = navigationItemView.widthAnchor.constraint(equalToConstant: 0.0)
+        widthz.isActive = true
+        if transition { _widthOfTransitionNavigationItemViewForZeroContent = widthz } else {
+            _widthOfNavigationItemViewForZeroContent = widthz
+        }
+        
+        let widthc = itemsContainerView.widthAnchor.constraint(equalTo: navigationItemView.widthAnchor)
+        widthc.priority = UILayoutPriorityDefaultHigh
+        widthc.isActive = true
     }
     
     private func _setupDelegates() {

            _commitTransitionNavigationItemViews(navigationItemViews, navigationItems: navigationItems)
        } else {
            _navigationItemView.alpha = 1.0
            if let _constraint = _constraintBetweenTransitionTitleContainerAndItemsContainer  {
                removeConstraint(_constraint)
            }
            let _constraint = _titleItemsContainerView.trailingAnchor.constraint(equalTo: _itemsContainerView.leadingAnchor, constant: -DefaultTabNavigationItemEdgeMargin)
            _constraint.isActive = true
            _constraintBetweenTitleContainerAndItemsContainer = _constraint
            navigationItemViews.itemsContainerView.removeFromSuperview()
        }
    }

        
        _leadingConstraintOfLastItemView = _leadingConstraintOfLastTransitionItemView
        _widthOfNavigationItemViewForZeroContent = _widthOfTransitionNavigationItemViewForZeroContent
        _constraintBetweenTitlesAndItems = _constraintBetweenTransitionTitlesAndItems
        
        _itemsContainerView = navigationItemViews.itemsContainerView
        _itemsScrollView = navigationItemViews.itemsScrollView
