         badgeContainerWidth?.constant =  isBadgeVisible ? badge.bounds.size.width : 0.0
         badgeContainerLeading?.constant = isBadgeVisible ? Defaults.badgeLeadingInset : 0.0
     }
+    
+    private func updateAlignmentConstraints() {
+        switch verticalAlignment {
+        case .center:
+            labelCenterConstraint?.isActive = true
+            labelTopConstraint?.isActive = false
+            labelBottomConstraint?.isActive = false
+        case .top:
+            labelCenterConstraint?.isActive = false
+            labelTopConstraint?.isActive = true
+            labelBottomConstraint?.isActive = false
+        case .bottom:
+            labelCenterConstraint?.isActive = false
+            labelTopConstraint?.isActive = false
+            labelBottomConstraint?.isActive = true
+        }
+    }
 }
 
 private extension TMLabelBarButton {

        static let badgeLeadingInset: CGFloat = 8.0
    }
    
    // MARK: Properties
    
    open override var intrinsicContentSize: CGSize {

        }
    }
    
    /// How to vertically align the label within the button. Defaults to `.center`.
    ///
    /// - Note: This will only apply when the button is larger than
    /// the required intrinsic height. If the bar sizes itself intrinsically,
    /// setting this paramter will have no effect.
    open var verticalAlignment: VerticalAlignment = .center {
        didSet {
            updateAlignmentConstraints()
        }
    }
    private var labelTopConstraint: NSLayoutConstraint?
    private var labelCenterConstraint: NSLayoutConstraint?
    private var labelBottomConstraint: NSLayoutConstraint?
    
    // MARK: Lifecycle
    
    open override func layout(in view: UIView) {
