From 0aad6f3aa7a0b5eb12a96d88b91efdabedba2b99 Mon Sep 17 00:00:00 2001 From: Kevin G Christiano Date: Tue, 5 May 2020 10:41:55 -0400 Subject: [PATCH] requested changes and improvements made --- MVMCoreUI/Atomic/Atoms/Views/Arrow.swift | 18 ++++------ .../CarouselIndicator/BarsIndicatorView.swift | 10 +++--- .../CarouselIndicator/CarouselIndicator.swift | 7 ++-- .../NumericIndicatorView.swift | 36 +++++++++---------- .../Atomic/Organisms/CarouselModel.swift | 2 +- 5 files changed, 35 insertions(+), 38 deletions(-) diff --git a/MVMCoreUI/Atomic/Atoms/Views/Arrow.swift b/MVMCoreUI/Atomic/Atoms/Views/Arrow.swift index ae5182e5..ea5023c8 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/Arrow.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/Arrow.swift @@ -54,7 +54,7 @@ open class Arrow: View { get { return arrowModel?.lineWidth ?? 1 } set { arrowModel?.lineWidth = newValue } } - + //-------------------------------------------------- // MARK: - Constraints //-------------------------------------------------- @@ -78,12 +78,6 @@ open class Arrow: View { super.init(frame: frame) } -// public convenience init(degrees: Float = 0) { -// self.init(frame: .zero) -// self.model = ArrowModel() -// arrowModel?.degrees = degrees -// } - public required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } @@ -105,9 +99,7 @@ open class Arrow: View { // MARK: - Drawing //-------------------------------------------------- - /** - Draws the arrow pointing to the right and then rotates the arrow x degrees counter-clockwise. - */ + /// Draws the arrow pointing to the right and then rotates the arrow x degrees counter-clockwise. open override func draw(_ rect: CGRect) { super.draw(rect) @@ -115,7 +107,7 @@ open class Arrow: View { drawShapeLayer() let radians = CGFloat(degrees * Float.pi / 180) - arrowLayer.transform = CATransform3DMakeRotation(-radians, 0.0, 0.0, 1.0) + arrowLayer.transform = CATransform3DMakeRotation(-radians, 0, 0, 1) } private func drawShapeLayer() { @@ -153,6 +145,10 @@ open class Arrow: View { return bezierPath.cgPath } + //-------------------------------------------------- + // MARK: - MoleculeViewProtocol + //-------------------------------------------------- + public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { super.set(with: model, delegateObject, additionalData) diff --git a/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/BarsIndicatorView.swift b/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/BarsIndicatorView.swift index 42171934..9b4ea3bc 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/BarsIndicatorView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/BarsIndicatorView.swift @@ -61,12 +61,12 @@ open class BarsIndicatorView: CarouselIndicator { } public override var indicatorColor: UIColor { - get { return carouselIndicatorModel?.indicatorColor.uiColor ?? .mvmBlack } + get { return super.indicatorColor } set (newColor) { super.indicatorColor = newColor - for (i, barTuple) in barReferences.enumerated() where i != currentIndex { - barTuple.view.backgroundColor = newColor + for (i, barTuple) in barReferences.enumerated() { + barTuple.view.backgroundColor = i == currentIndex ? currentIndicatorColor : newColor } } } @@ -158,8 +158,8 @@ open class BarsIndicatorView: CarouselIndicator { } let expression = { - self.barReferences[previousIndex].view.backgroundColor = self.indicatorColor - self.barReferences[newIndex].view.backgroundColor = self.currentIndicatorColor + self.barReferences[previousIndex].view.backgroundColor = self.isEnabled ? self.indicatorColor : self.disabledIndicatorColor + self.barReferences[newIndex].view.backgroundColor = self.isEnabled ? self.currentIndicatorColor : self.disabledIndicatorColor self.barReferences[previousIndex].constraint.constant = BarsIndicatorView.indicatorBarHeight.unselected self.barReferences[newIndex].constraint.constant = BarsIndicatorView.indicatorBarHeight.selected self.layoutIfNeeded() diff --git a/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/CarouselIndicator.swift b/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/CarouselIndicator.swift index ebebd047..be3b3542 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/CarouselIndicator.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/CarouselIndicator.swift @@ -140,11 +140,12 @@ open class CarouselIndicator: Control, CarouselPageControlProtocol { } func incrementCurrentIndex() { - currentIndex = min(currentIndex + 1, numberOfPages - 1) + currentIndex = (currentIndex + 1) % numberOfPages } func decrementCurrentIndex() { - currentIndex = max(0, currentIndex - 1) + let newIndex = currentIndex - 1 + currentIndex = newIndex < 0 ? numberOfPages - 1 : newIndex } /// Increments the currentIndex value. @@ -222,7 +223,7 @@ open class CarouselIndicator: Control, CarouselPageControlProtocol { let accessibleIndex = ordinalFormatter.string(from: NSNumber(value: index)) else { return } - accessibilityValue = String(format: accessibleFormat, accessibleIndex, total) + accessibilityValue = String(format: accessibleFormat, accessibleIndex, total) } func accessibilityAdjust(toPage index: Int) { diff --git a/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/NumericIndicatorView.swift b/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/NumericIndicatorView.swift index 634038c1..8660968d 100644 --- a/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/NumericIndicatorView.swift +++ b/MVMCoreUI/Atomic/Atoms/Views/CarouselIndicator/NumericIndicatorView.swift @@ -26,12 +26,13 @@ open class NumericIndicatorView: CarouselIndicator { let leftArrow: Arrow = { let arrow = Arrow(model: ArrowModel(), nil, nil) arrow.isAccessibilityElement = false + arrow.direction = .left arrow.pinHeightAndWidth() return arrow }() let rightArrow: Arrow = { - let arrow = Arrow() + let arrow = Arrow(model: ArrowModel(), nil, nil) arrow.pinHeightAndWidth() return arrow }() @@ -41,23 +42,17 @@ open class NumericIndicatorView: CarouselIndicator { //-------------------------------------------------- open override var isEnabled: Bool { - didSet { - pageCount.textColor = isEnabled ? indicatorColor : disabledIndicatorColor - leftArrow.tintColor = isEnabled ? indicatorColor : disabledIndicatorColor - rightArrow.tintColor = isEnabled ? indicatorColor : disabledIndicatorColor - } + didSet { setViewColor(isEnabled ? indicatorColor : disabledIndicatorColor) } } /// Sets the color for pageCount text, left arrow and right arrow. public override var indicatorColor: UIColor { - get { return carouselIndicatorModel?.indicatorColor.uiColor ?? .mvmBlack } + get { return super.indicatorColor } set (newColor) { super.indicatorColor = newColor if isEnabled { - pageCount.textColor = newColor - leftArrow.arrowModel?.color = Color(uiColor: newColor) - rightArrow.arrowModel?.color = Color(uiColor: newColor) + setViewColor(newColor) } } } @@ -90,12 +85,16 @@ open class NumericIndicatorView: CarouselIndicator { leftArrow.centerYAnchor.constraint(equalTo: centerYAnchor), rightArrow.centerYAnchor.constraint(equalTo: centerYAnchor), leftArrow.leadingAnchor.constraint(equalTo: leadingAnchor), - pageCount.leadingAnchor.constraint(equalTo: leftArrow.trailingAnchor, constant: PaddingOne), - rightArrow.leadingAnchor.constraint(equalTo: pageCount.trailingAnchor, constant: PaddingOne), + pageCount.leadingAnchor.constraint(equalTo: leftArrow.trailingAnchor, constant: Padding.Two), + rightArrow.leadingAnchor.constraint(equalTo: pageCount.trailingAnchor, constant: Padding.Two), trailingAnchor.constraint(equalTo: rightArrow.trailingAnchor) ]) } + //-------------------------------------------------- + // MARK: - Methods + //-------------------------------------------------- + public override func assessTouchOf(_ touchPoint_X: CGFloat) { if touchPoint_X > bounds.width / 2 { @@ -105,14 +104,15 @@ open class NumericIndicatorView: CarouselIndicator { } } - open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { - super.set(with: model, delegateObject, additionalData) + private func setViewColor(_ newColor: UIColor) { - guard let model = model as? CarouselIndicatorModel else { return } - - isEnabled = model.enabled + pageCount.textColor = newColor + leftArrow.color = newColor + rightArrow.color = newColor + rightArrow.setNeedsDisplay() + leftArrow.setNeedsDisplay() } - + //-------------------------------------------------- // MARK: - IndicatorViewProtocol //-------------------------------------------------- diff --git a/MVMCoreUI/Atomic/Organisms/CarouselModel.swift b/MVMCoreUI/Atomic/Organisms/CarouselModel.swift index c8406d7b..857901e8 100644 --- a/MVMCoreUI/Atomic/Organisms/CarouselModel.swift +++ b/MVMCoreUI/Atomic/Organisms/CarouselModel.swift @@ -29,7 +29,7 @@ import UIKit public var itemAlignment: UICollectionView.ScrollPosition? public var pagingMolecule: (CarouselPagingModelProtocol & MoleculeModelProtocol)? - public init(molecules: [CarouselItemModel]){ + public init(molecules: [CarouselItemModel]) { self.molecules = molecules }