From d42269e5ab85ef2b4ea44ad0db3a841c3babcb8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Valde=CC=81s?= Date: Thu, 2 Mar 2017 21:25:52 +0000 Subject: [PATCH] =?UTF-8?q?Add=20option=20to=20select=20a=20different=20ve?= =?UTF-8?q?rtical=20alignment=20for=20ButtonBar=E2=80=99s=20SelectedBar:?= =?UTF-8?q?=20top,=20middle=20or=20bottom=20(default).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ButtonBarPagerTabStripViewController.swift | 3 +++ Sources/ButtonBarView.swift | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) 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 }