From 2f7315db86a08090f880f55d549b45a899f64355 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 25 May 2023 13:04:53 -0500 Subject: [PATCH] refactored enum into container Signed-off-by: Matt Bruce --- VDS/Components/Tabs/TabsContainer.swift | 35 ++++++++++--------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/VDS/Components/Tabs/TabsContainer.swift b/VDS/Components/Tabs/TabsContainer.swift index 3b7cf588..623e5b73 100644 --- a/VDS/Components/Tabs/TabsContainer.swift +++ b/VDS/Components/Tabs/TabsContainer.swift @@ -9,7 +9,14 @@ import Foundation import UIKit open class TabsContainer: View { - + //-------------------------------------------------- + // MARK: - Enums + //-------------------------------------------------- + public enum Width { + case percentage(CGFloat) + case value(CGFloat) + } + //-------------------------------------------------- // MARK: - Public Properties //-------------------------------------------------- @@ -52,10 +59,10 @@ open class TabsContainer: View { open var sticky: Bool = false { didSet { setNeedsUpdate() } } ///rules for width - private var _width: Tabs.Width = .percentage(0.25) + private var _width: Width = .percentage(0.25) ///Width of all Tabs when orientation is vertical, defaults to 25%. - open var width: Tabs.Width { + open var width: Width { get { return _width } @@ -144,8 +151,8 @@ open class TabsContainer: View { self.tabClicked(index: index) } + //update tabs width constraints contentViewWidthConstraint?.isActive = false - if orientation == .vertical { switch width { case .percentage(let amount): @@ -153,8 +160,10 @@ open class TabsContainer: View { case .value(let amount): contentViewWidthConstraint = tabMenu.widthAnchor.constraint(equalToConstant: amount) } - contentViewWidthConstraint?.isActive = true + } else { + contentViewWidthConstraint = tabMenu.widthAnchor.constraint(equalTo: widthAnchor) } + contentViewWidthConstraint?.isActive = true tabMenu.surface = surface tabMenu.disabled = disabled @@ -168,9 +177,6 @@ open class TabsContainer: View { tabMenu.selectedIndex = selectedIndex tabMenu.size = size tabMenu.sticky = sticky - tabMenu.tabItems.forEach { - $0.width = tabWidth(for: $0) - } setSelected(index: selectedIndex) tabModels.forEach { @@ -182,19 +188,6 @@ open class TabsContainer: View { //-------------------------------------------------- // MARK: - Private Methods //-------------------------------------------------- - private func tabWidth(for item: Tabs.TabItem) -> CGFloat? { - guard orientation == .vertical else { return item.width } - var calculated: CGFloat - switch width { - case .percentage(let percent): - calculated = (bounds.width * percent) - tabMenu.tabSpacing - case .value(let value): - calculated = value - tabMenu.tabSpacing - } - - return calculated > minWidth ? calculated : minWidth - } - private func tabClicked(index: Int) { onTabChange?(index) setSelected(index: index)