general working order

This commit is contained in:
Kevin G Christiano 2020-03-02 13:01:07 -05:00
parent 64ada3e61d
commit 3e3b7dac79
5 changed files with 50 additions and 35 deletions

View File

@ -34,6 +34,24 @@ open class Arrow: View {
widthConstraint?.isActive = true
}
//--------------------------------------------------
// MARK: - Initializers
//--------------------------------------------------
public override init(frame: CGRect) {
super.init(frame: frame)
}
public convenience init(model: ArrowModel, degrees: Float = 0) {
self.init(frame: .zero)
self.model = model
arrowModel?.degrees = degrees
}
public required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
//--------------------------------------------------
// MARK: - Lifecycle
//--------------------------------------------------

View File

@ -29,6 +29,12 @@ open class ArrowModel: MoleculeModelProtocol {
public var height: CGFloat = 12
public var width: CGFloat = 12
//--------------------------------------------------
// MARK: - Initializer
//--------------------------------------------------
public init() { }
//--------------------------------------------------
// MARK: - Keys

View File

@ -58,10 +58,10 @@ open class CarouselIndicator: Control, CarouselPageControlProtocol {
/// The view control relative to the state of the indicator type.
private(set) var indicatorView: IndicatorView? {
willSet {
indicatorView?.removeFromSuperview()
}
willSet { indicatorView?.removeFromSuperview() }
didSet {
indicatorView?.removeFromSuperview()
guard let indicatorView = indicatorView else { return }
addSubview(indicatorView)
@ -73,6 +73,7 @@ open class CarouselIndicator: Control, CarouselPageControlProtocol {
indicatorView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
trailingAnchor.constraint(equalTo: indicatorView.trailingAnchor).isActive = true
updateUI()
}
}
@ -137,12 +138,7 @@ open class CarouselIndicator: Control, CarouselPageControlProtocol {
guard _numberOfPages != newTotal else { return }
_numberOfPages = newTotal
if hidesForSinglePage && newTotal <= 1 {
isHidden = true
} else {
isHidden = false
indicatorView = BarsIndicatorView()
}
isHidden = hidesForSinglePage && newTotal <= 1
if isBarIndicator() {
(indicatorView as? BarsIndicatorView)?.generateBars()

View File

@ -69,7 +69,6 @@ open class BarsIndicatorView: View, IndicatorViewProtocol {
isUserInteractionEnabled = false
stackView.heightAnchor.constraint(equalToConstant: 4).isActive = true
// heightAnchor.constraint(equalToConstant: 4).isActive = true
stackView.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true
stackView.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true
trailingAnchor.constraint(equalTo: stackView.trailingAnchor).isActive = true

View File

@ -15,7 +15,7 @@ open class NumericIndicatorView: View, IndicatorViewProtocol {
//--------------------------------------------------
/// Text to display the current count of total pages for viewing.
open var pageCountLabel: Label = {
open var pageCount: Label = {
let label = Label.commonLabelB2(true)
label.setContentCompressionResistancePriority(.required, for: .vertical)
label.textAlignment = .center
@ -23,15 +23,13 @@ open class NumericIndicatorView: View, IndicatorViewProtocol {
}()
let leftArrow: Arrow = {
let arrow = Arrow()
(arrow.model as? ArrowModel)?.degrees = 180
let arrow = Arrow(model: ArrowModel(), degrees: 180)
arrow.pinHeightAndWidth()
arrow.setNeedsDisplay()
return arrow
}()
let rightArrow: Arrow = {
let arrow = Arrow()
let arrow = Arrow(model: ArrowModel())
arrow.pinHeightAndWidth()
return arrow
}()
@ -41,19 +39,19 @@ open class NumericIndicatorView: View, IndicatorViewProtocol {
//--------------------------------------------------
public var parentCarouselIndicator: CarouselIndicator? {
return superview as? CarouselIndicator
}
return superview as? CarouselIndicator
}
open var isEnabled: Bool = true {
didSet {
let enabledColor = parentCarouselIndicator?.indicatorTintColor ?? .mvmBlack
let disabledColor = parentCarouselIndicator?.disabledIndicatorColor ?? .mvmCoolGray3
pageCountLabel.textColor = isEnabled ? enabledColor : disabledColor
pageCount.textColor = isEnabled ? enabledColor : disabledColor
leftArrow.tintColor = isEnabled ? enabledColor : disabledColor
rightArrow.tintColor = isEnabled ? enabledColor : disabledColor
}
}
//--------------------------------------------------
// MARK: - Initializers
//--------------------------------------------------
@ -76,7 +74,7 @@ open class NumericIndicatorView: View, IndicatorViewProtocol {
open override func updateView(_ size: CGFloat) {
super.updateView(size)
pageCountLabel.updateView(size)
pageCount.updateView(size)
}
//--------------------------------------------------
@ -87,23 +85,21 @@ open class NumericIndicatorView: View, IndicatorViewProtocol {
super.setupView()
isUserInteractionEnabled = false
backgroundColor = .black
addSubview(pageCountLabel)
addSubview(pageCount)
addSubview(leftArrow)
addSubview(rightArrow)
pageCountLabel.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true
pageCountLabel.topAnchor.constraint(equalTo: topAnchor).isActive = true
bottomAnchor.constraint(equalTo: pageCountLabel.bottomAnchor).isActive = true
leftArrow.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
rightArrow.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
NSLayoutConstraint.activate(NSLayoutConstraint.constraints(withVisualFormat: "H:|-[leftArrow]-(padding)-[pageCountLabel]-(padding)-[rightArrow]-|",
options: .directionLeadingToTrailing,
metrics: ["padding": PaddingOne],
views: ["leftArrow": leftArrow,
"pageCountLabel": pageCountLabel,
"rightArrow": rightArrow]))
NSLayoutConstraint.activate([
pageCount.centerXAnchor.constraint(equalTo: centerXAnchor),
pageCount.topAnchor.constraint(equalTo: topAnchor),
bottomAnchor.constraint(equalTo: pageCount.bottomAnchor),
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),
trailingAnchor.constraint(equalTo: rightArrow.trailingAnchor)
])
}
//--------------------------------------------------
@ -112,7 +108,7 @@ open class NumericIndicatorView: View, IndicatorViewProtocol {
open func updateUI(previousIndex oldIndex: Int, newIndex: Int, totalCount: Int, isAnimated: Bool) {
pageCountLabel.text = "\(newIndex)/\(totalCount)"
pageCount.text = "\(newIndex + 1)/\(totalCount)"
layoutIfNeeded()
}
}