fix molecule protocol type

Update column molecule to allow for matching heights on each side.
This commit is contained in:
Pfeil, Scott Robert 2020-03-16 11:58:36 -04:00
parent bf39fd564f
commit d8c52ab8a6
6 changed files with 47 additions and 55 deletions

View File

@ -8,9 +8,7 @@
import Foundation
extension UIStackView: MoleculeViewProtocol {
public func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?) {}
extension UIStackView: MVMCoreUIMoleculeViewProtocol {
public func updateView(_ size: CGFloat) {
for view in arrangedSubviews {
(view as? MVMCoreViewProtocol)?.updateView(size)
@ -19,7 +17,7 @@ extension UIStackView: MoleculeViewProtocol {
public func reset() {
for view in arrangedSubviews {
(view as? MoleculeViewProtocol)?.reset?()
(view as? MVMCoreUIMoleculeViewProtocol)?.reset?()
}
}
}

View File

@ -311,7 +311,7 @@ static CGFloat const IndicatorRectangleHeight = 4;
self.currentPage = page;
}
#pragma mark - MoleculeViewProtocol
#pragma mark - MVMCoreUIMoleculeViewProtocol
- (void)setWithJSON:(NSDictionary *)json delegateObject:(MVMCoreUIDelegateObject *)delegateObject additionalData:(NSDictionary *)additionalData {
NSString *colorString = [json string:KeyBackgroundColor];

View File

@ -23,9 +23,42 @@ import Foundation
let rightHeadline3 = Label.commonLabelB1(true)
let rightBody = Label.commonLabelB2(true)
let rightLink = Link()
let containerView = View()
let leftVerticalStack = UIStackView()
let rightVerticalStack = UIStackView()
let containingStack: Stack<StackModel>
//------------------------------------------------------
// MARK: - Initializers
//------------------------------------------------------
public override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
let stackHeadline1 = Stack<StackModel>.createStack(with: [(view: leftHeadline1, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightHeadline1, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
let stackHeadline2 = Stack<StackModel>.createStack(with: [(view: leftHeadline2, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightHeadline2, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
let stackHeadline3 = Stack<StackModel>.createStack(with: [(view: leftHeadline3, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightHeadline3, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
let stackBody = Stack<StackModel>.createStack(with: [(view: leftBody, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightBody, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
let stackLink = Stack<StackModel>.createStack(with: [(view: leftLink, model: StackItemModel(percent: 50, verticalAlignment: .leading)),
(view: rightLink, model: StackItemModel(percent: 50, verticalAlignment: .leading))],
axis: .horizontal)
containingStack = Stack<StackModel>.createStack(with: [stackHeadline1,
stackHeadline2,
stackHeadline3,
stackBody,
stackLink],
spacing: 0)
containingStack.stackModel?.molecules[1].spacing = 5
containingStack.stackModel?.molecules[2].spacing = 5
containingStack.stackModel?.molecules[4].spacing = 5
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
public required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
//------------------------------------------------------
// MARK: - Properties
@ -35,50 +68,13 @@ import Foundation
//-------------------------------------------------------
// MARK: - View Lifecycle
//-------------------------------------------------------
open override func updateView(_ size: CGFloat) {
super.updateView(size)
leftLink.updateView(size)
rightLink.updateView(size)
}
open override func setupView() {
super.setupView()
containerView.translatesAutoresizingMaskIntoConstraints = false
leftVerticalStack.translatesAutoresizingMaskIntoConstraints = false
rightVerticalStack.translatesAutoresizingMaskIntoConstraints = false
leftVerticalStack.addArrangedSubview(leftHeadline1)
leftVerticalStack.addArrangedSubview(leftHeadline2)
leftVerticalStack.addArrangedSubview(leftHeadline3)
leftVerticalStack.addArrangedSubview(leftBody)
leftVerticalStack.addArrangedSubview(leftLink)
leftVerticalStack.axis = .vertical
leftVerticalStack.alignment = .leading
rightVerticalStack.addArrangedSubview(rightHeadline1)
rightVerticalStack.addArrangedSubview(rightHeadline2)
rightVerticalStack.addArrangedSubview(rightHeadline3)
rightVerticalStack.addArrangedSubview(rightBody)
rightVerticalStack.addArrangedSubview(rightLink)
rightVerticalStack.axis = .vertical
rightVerticalStack.alignment = .leading
containerView.addSubview(leftVerticalStack)
containerView.addSubview(rightVerticalStack)
//containerView constraints
contentView.addSubview(containerView)
containerHelper.constrainView(containerView)
NSLayoutConstraint.pinViews(leftView: leftVerticalStack, rightView: rightVerticalStack, alignTop: true)
//leftVerticalStack constraints
leftVerticalStack.widthAnchor.constraint(equalTo: rightVerticalStack.widthAnchor, multiplier: 1).isActive = true
leftVerticalStack.heightAnchor.constraint(equalTo: rightVerticalStack.heightAnchor, multiplier: 1).isActive = true
leftVerticalStack.setCustomSpacing(stackSpacing, after: leftHeadline1)
leftVerticalStack.setCustomSpacing(stackSpacing, after: leftHeadline2)
leftVerticalStack.setCustomSpacing(stackSpacing, after: leftBody)
//rightVerticalStack constraints
rightVerticalStack.setCustomSpacing(stackSpacing, after: rightHeadline1)
rightVerticalStack.setCustomSpacing(stackSpacing, after: rightHeadline2)
rightVerticalStack.setCustomSpacing(stackSpacing, after: rightBody)
addMolecule(containingStack)
for molecule in containingStack.stackItems {
((molecule as? StackItem)?.view as? Stack<StackModel>)?.restack()
}
containingStack.restack()
}
//------------------------------------------------------
@ -105,12 +101,10 @@ import Foundation
leftHeadline2.styleB1(true)
leftHeadline3.styleB1(true)
leftBody.styleB2(true)
leftLink.reset()
rightHeadline1.styleB1(true)
rightHeadline2.styleB1(true)
rightHeadline3.styleB1(true)
rightBody.styleB2(true)
rightLink.reset()
}
public override class func estimatedHeight(with molecule: MoleculeModelProtocol?, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {

View File

@ -152,7 +152,7 @@ import UIKit
styleDefault()
spaceAboveMolecule = 6.0
spaceBelowMolecule = 6.0
(middleView as? MoleculeViewProtocol)?.reset?()
(middleView as? MVMCoreUIMoleculeViewProtocol)?.reset?()
}
func styleDefault() {

View File

@ -73,7 +73,7 @@ open class StringAndMoleculeView: View {
override open func reset() {
super.reset()
label.reset()
(molecule as? MoleculeViewProtocol)?.reset?()
(molecule as? MVMCoreUIMoleculeViewProtocol)?.reset?()
}
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable : Any]?) {

View File

@ -135,7 +135,7 @@ open class Stack<T>: Container where T: (StackModelProtocol & MoleculeModelProto
super.reset()
backgroundColor = .clear
for item in stackItems {
(item as? MoleculeViewProtocol)?.reset?()
(item as? MVMCoreUIMoleculeViewProtocol)?.reset?()
}
}