SubNavManager fixes

This commit is contained in:
Scott Pfeil 2022-03-08 14:47:32 -05:00
parent da646a29a6
commit c73bd06853
4 changed files with 27 additions and 21 deletions

View File

@ -23,7 +23,7 @@ import UIKit
var additionalData: [AnyHashable: Any]?
let layout = UICollectionViewFlowLayout()
public var collectionView: UICollectionView?
public var collectionView: CollectionView?
let bottomScrollView = UIScrollView(frame: .zero)
let bottomContentView = View()
@ -61,6 +61,7 @@ import UIKit
open override func updateView(_ size: CGFloat) {
super.updateView(size)
collectionView?.updateView(size)
}
open override func setupView() {
@ -76,7 +77,7 @@ import UIKit
layout.scrollDirection = .horizontal
layout.minimumLineSpacing = 0
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
let collectionView = CollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.translatesAutoresizingMaskIntoConstraints = false
collectionView.register(TabItemCell.self, forCellWithReuseIdentifier: TabCellId)
collectionView.backgroundColor = .clear
@ -172,6 +173,7 @@ extension Tabs: UICollectionViewDataSource {
return UICollectionViewCell()
}
cell.updateCell(labelModel: labelModel, indexPath: indexPath, delegateObject: delegateObject, additionalData: additionalData, selected: indexPath.row == selectedIndex, tabsModel: tabsModel)
updateView(collectionView.bounds.width)
return cell
}
}
@ -317,7 +319,6 @@ extension Tabs {
@objcMembers public class TabItemCell: CollectionViewCell {
public let label = Label()
public var labelModel: LabelModel?
public override func setupView() {
super.setupView()
@ -326,10 +327,14 @@ extension Tabs {
label.baselineAdjustment = .alignCenters
}
public override func updateView(_ size: CGFloat) {
super.updateView(size)
label.updateView(size)
}
public func updateCell(labelModel: LabelModel, indexPath: IndexPath, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?, selected: Bool, tabsModel: TabsModel?) {
label.reset()
label.set(with: labelModel, delegateObject, additionalData)
self.labelModel = labelModel
if selected {
label.textColor = tabsModel?.selectedColor.uiColor ?? .black
} else {

View File

@ -54,8 +54,8 @@ public class TabsModel: MoleculeModelProtocol {
public class TabItemModel: Codable {
var label: LabelModel
var action: ActionModelProtocol?
public var label: LabelModel
public var action: ActionModelProtocol?
init(label: LabelModel) {
self.label = label

View File

@ -16,6 +16,15 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
/// A list of cached controllers.
private var viewControllers: [UIViewController?]
/// Used to layout the ui.
public lazy var stackView: UIStackView = {
let stackView = UIStackView(arrangedSubviews: [tabs, line, subNavigationController.view])
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.isAccessibilityElement = false
stackView.axis = .vertical
return stackView
}()
private var tabsModel: TabsModel
public lazy var tabs: Tabs = {
@ -79,24 +88,16 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
open override func loadView() {
let view = View()
view.translatesAutoresizingMaskIntoConstraints = true
view.addSubview(tabs)
view.addSubview(line)
addChild(subNavigationController)
view.addSubview(subNavigationController.view)
view.addSubview(stackView)
subNavigationController.didMove(toParent: self)
NSLayoutConstraint.activate([
tabs.leadingAnchor.constraint(equalTo: view.leadingAnchor),
view.trailingAnchor.constraint(equalTo: tabs.trailingAnchor),
line.leadingAnchor.constraint(equalTo: view.leadingAnchor),
view.trailingAnchor.constraint(equalTo: line.trailingAnchor),
subNavigationController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
view.trailingAnchor.constraint(equalTo: subNavigationController.view.trailingAnchor),
tabs.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
line.topAnchor.constraint(equalTo: tabs.bottomAnchor),
subNavigationController.view.topAnchor.constraint(equalTo: line.bottomAnchor),
view.bottomAnchor.constraint(equalTo: subNavigationController.view.bottomAnchor)
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
view.trailingAnchor.constraint(equalTo: stackView.trailingAnchor),
stackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
view.bottomAnchor.constraint(equalTo: stackView.bottomAnchor)
])
self.view = view
}

View File

@ -8,7 +8,7 @@
import Foundation
/// The navigation controller that the tabbarpagecontrol uses for the children controllers. It always has the navigation bar hidden.
/// The navigation controller that the SubNavManager uses for the children controllers. It always has the navigation bar hidden.
@objc public class SubNavManagerNavigationController: UINavigationController {
public override init(rootViewController: UIViewController) {