Merge branch 'feature/atomic_vds_tabs' into feature/vds_batch_two
This commit is contained in:
commit
21afbb55cd
@ -22,14 +22,34 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
|
|||||||
|
|
||||||
/// Used to layout the ui.
|
/// Used to layout the ui.
|
||||||
public lazy var stackView: UIStackView = {
|
public lazy var stackView: UIStackView = {
|
||||||
let stackView = UIStackView(arrangedSubviews: [tabs, subNavigationController.view])
|
let stackView = UIStackView(arrangedSubviews: [tabsWrapper, subNavigationController.view])
|
||||||
stackView.translatesAutoresizingMaskIntoConstraints = false
|
stackView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
stackView.isAccessibilityElement = false
|
stackView.isAccessibilityElement = false
|
||||||
stackView.axis = .vertical
|
stackView.axis = .vertical
|
||||||
return stackView
|
return stackView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
private var tabsLeadingConstraint: NSLayoutConstraint?
|
||||||
|
private var tabsTrailingConstraint: NSLayoutConstraint?
|
||||||
|
|
||||||
|
private lazy var tabsWrapper: UIView = {
|
||||||
|
// create the wrapper view for tabs
|
||||||
|
let tabsWrapper = UIView()
|
||||||
|
tabsWrapper.translatesAutoresizingMaskIntoConstraints = false
|
||||||
|
tabsWrapper.addSubview(tabs)
|
||||||
|
|
||||||
|
// tabs constraints on wrapper
|
||||||
|
tabs.pinTop()
|
||||||
|
tabs.pinBottom()
|
||||||
|
tabsLeadingConstraint = tabs.pinLeading(anchor: tabsWrapper.leadingAnchor)?.activate()
|
||||||
|
tabsTrailingConstraint = tabsWrapper.pinTrailingGreaterThanOrEqualTo(anchor: tabs.trailingAnchor)?.activate()
|
||||||
|
return tabsWrapper
|
||||||
|
}()
|
||||||
|
|
||||||
|
private var isFillContainer: Bool { tabsModel.tabs.count <= fillContainerTabsCount }
|
||||||
|
|
||||||
private var tabsModel: TabsModel
|
private var tabsModel: TabsModel
|
||||||
|
|
||||||
public lazy var tabs: Tabs = {
|
public lazy var tabs: Tabs = {
|
||||||
let tabs = Tabs(model: tabsModel, delegateObjectIVar, nil)
|
let tabs = Tabs(model: tabsModel, delegateObjectIVar, nil)
|
||||||
tabs.backgroundColor = (viewController as? PageProtocol)?.pageModel?.navigationBar?.backgroundColor?.uiColor ?? VDSColor.backgroundPrimaryLight
|
tabs.backgroundColor = (viewController as? PageProtocol)?.pageModel?.navigationBar?.backgroundColor?.uiColor ?? VDSColor.backgroundPrimaryLight
|
||||||
@ -72,7 +92,11 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
|
|||||||
func setup(with loadObject: MVMCoreLoadObject, shouldEnableSwipeGestures: Bool) {
|
func setup(with loadObject: MVMCoreLoadObject, shouldEnableSwipeGestures: Bool) {
|
||||||
self.loadObject = loadObject
|
self.loadObject = loadObject
|
||||||
pageType = loadObject.pageType
|
pageType = loadObject.pageType
|
||||||
tabs.fillContainer = tabsModel.tabs.count <= fillContainerTabsCount
|
|
||||||
|
//update the tabs
|
||||||
|
tabs.fillContainer = isFillContainer
|
||||||
|
updateTabsMargin()
|
||||||
|
|
||||||
if shouldEnableSwipeGestures {
|
if shouldEnableSwipeGestures {
|
||||||
customInteractor = SubNavInteractor(viewController: self)
|
customInteractor = SubNavInteractor(viewController: self)
|
||||||
}
|
}
|
||||||
@ -126,6 +150,12 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
|
|||||||
super.viewWillAppear(animated)
|
super.viewWillAppear(animated)
|
||||||
hideNavigationBarLine(true)
|
hideNavigationBarLine(true)
|
||||||
}
|
}
|
||||||
|
/// ensures margin for tabs are correct
|
||||||
|
private func updateTabsMargin() {
|
||||||
|
let tabsGutterSpacing = isFillContainer ? 0 : Padding.Component.horizontalPaddingForSize(stackView.bounds.width)
|
||||||
|
tabsLeadingConstraint?.constant = tabsGutterSpacing
|
||||||
|
tabsTrailingConstraint?.constant = tabsGutterSpacing
|
||||||
|
}
|
||||||
|
|
||||||
/// Hides/Shows the navigation bar for the page.
|
/// Hides/Shows the navigation bar for the page.
|
||||||
open func hideNavigationBarLine(_ isHidden: Bool) {
|
open func hideNavigationBarLine(_ isHidden: Bool) {
|
||||||
@ -144,6 +174,7 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
|
|||||||
super.updateViews()
|
super.updateViews()
|
||||||
if screenSizeChanged() {
|
if screenSizeChanged() {
|
||||||
tabs.updateView(view.bounds.size.width)
|
tabs.updateView(view.bounds.size.width)
|
||||||
|
updateTabsMargin()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user