diff --git a/App/Tabs/TabBarView.swift b/App/Tabs/TabBarView.swift index 9548194..5fdc38f 100644 --- a/App/Tabs/TabBarView.swift +++ b/App/Tabs/TabBarView.swift @@ -134,7 +134,7 @@ class TabBarView: UIView private var tabViews: [TabView] = [] private var activeTabIndex: Int = 0 private var tabContainerView = UIScrollView(frame: .zero) - + private var needsScrollAdjustment = false private let bottomSeparatorView = UIView(frame: .zero) private let placeholderTabImage = UIImage(systemName: "network") @@ -198,9 +198,7 @@ class TabBarView: UIView }) } - // Adjust scroll offset - let contentEnd = CGPoint(x: tabContainerView.contentSize.width - tabContainerView.bounds.width, y: 0.0) - tabContainerView.setContentOffset(contentEnd, animated: animated) + needsScrollAdjustment = true } public func reloadTab(atIndex index: Int) { @@ -312,5 +310,15 @@ class TabBarView: UIView tabContainerView.contentSize = CGSize( width: xOffset, height: tabContainerBounds.height ) + + // Adjust content offset, if needed + if needsScrollAdjustment { + if let activeTabView = tabViews.first(where: { $0.active }) { + if activeTabView.frame.maxX > (tabContainerView.contentOffset.x + tabContainerBounds.width) { + let contentOffset = min(tabContainerView.contentSize.width - tabContainerView.bounds.width, activeTabView.frame.maxX - tabContainerBounds.width) + tabContainerView.setContentOffset(CGPoint(x: contentOffset, y: 0), animated: true) + } + } + } } }