diff --git a/Sources/ButtonBarPagerTabStripViewController.swift b/Sources/ButtonBarPagerTabStripViewController.swift index cc44c7e..c93b45b 100644 --- a/Sources/ButtonBarPagerTabStripViewController.swift +++ b/Sources/ButtonBarPagerTabStripViewController.swift @@ -49,6 +49,7 @@ public struct ButtonBarPagerTabStripSettings { public var selectedBarBackgroundColor = UIColor.black public var selectedBarHeight: CGFloat = 5 + public var selectedBarVerticalAlignment: SelectedBarVerticalAlignment = .bottom public var buttonBarItemBackgroundColor: UIColor? public var buttonBarItemFont = UIFont.systemFont(ofSize: 18) @@ -147,6 +148,8 @@ open class ButtonBarPagerTabStripViewController: PagerTabStripViewController, Pa buttonBarView.selectedBar.backgroundColor = settings.style.selectedBarBackgroundColor buttonBarView.selectedBarHeight = settings.style.selectedBarHeight + buttonBarView.selectedBarVerticalAlignment = settings.style.selectedBarVerticalAlignment + // register button bar item cell switch buttonBarItemSpec! { case .nibFile(let nibName, let bundle, _): diff --git a/Sources/ButtonBarView.swift b/Sources/ButtonBarView.swift index ef8fd3b..e4fabe8 100644 --- a/Sources/ButtonBarView.swift +++ b/Sources/ButtonBarView.swift @@ -37,6 +37,12 @@ public enum SelectedBarAlignment { case progressive } +public enum SelectedBarVerticalAlignment { + case top + case middle + case bottom +} + open class ButtonBarView: UICollectionView { open lazy var selectedBar: UIView = { [unowned self] in @@ -50,6 +56,7 @@ open class ButtonBarView: UICollectionView { updateSelectedBarYPosition() } } + var selectedBarVerticalAlignment: SelectedBarVerticalAlignment = .bottom var selectedBarAlignment: SelectedBarAlignment = .center var selectedIndex = 0 @@ -167,7 +174,16 @@ open class ButtonBarView: UICollectionView { private func updateSelectedBarYPosition() { var selectedBarFrame = selectedBar.frame - selectedBarFrame.origin.y = frame.size.height - selectedBarHeight + + switch selectedBarVerticalAlignment { + case .top: + selectedBarFrame.origin.y = 0 + case .middle: + selectedBarFrame.origin.y = (frame.size.height - selectedBarHeight) / 2 + case .bottom: + selectedBarFrame.origin.y = frame.size.height - selectedBarHeight + } + selectedBarFrame.size.height = selectedBarHeight selectedBar.frame = selectedBarFrame }