         let width: CGFloat = leftOffset + button.frame.size.width + rightOffset
         
         containerOpenSize = CGSize(width: width, height: height)
-        let baseButtonCenterY: CGFloat = height - button.frame.size.height / 2.0
-        baseButtonOpenCenter = CGPoint(x: leftOffset + button.frame.size.width / 2.0, y: baseButtonCenterY)
+        var baseButtonCenterY: CGFloat = 0
+        
+        switch itemsPosition {
+        case .up:
+            baseButtonCenterY = containerOpenSize.height - button.frame.size.height / 2.0
+        case .down:
+            baseButtonCenterY = button.frame.size.height / 2.0
+        }
+        
+        buttonOpenCenter = CGPoint(x: leftOffset + button.frame.size.width / 2.0, y: baseButtonCenterY)
     }
     
     fileprivate func expandContainers(to: CGRect) {

    }
    
    fileprivate var containerOpenSize: CGSize = .zero
    fileprivate var baseButtonOpenCenter: CGPoint = .zero
    fileprivate var isAnimating = false
    fileprivate var animatedItemTag: Int = 0
    

    @objc optional func actionButtonDidOpen(_: UPActionButton)
    @objc optional func actionButtonWillClose(_: UPActionButton)
    @objc optional func actionButtonDidClose(_: UPActionButton)
}

public enum UPActionButtonItemsPosition {
    case up
    case down
}

public enum UPActionButtonTransitionType {
