collection changes
This commit is contained in:
parent
b0be1dbce3
commit
d393098fcd
73
MVMCoreUI/Atomic/Molecules/Items/CarouselItem.swift
Normal file
73
MVMCoreUI/Atomic/Molecules/Items/CarouselItem.swift
Normal file
@ -0,0 +1,73 @@
|
||||
//
|
||||
// CarouselItem.swift
|
||||
// MVMCoreUI
|
||||
//
|
||||
// Created by Scott Pfeil on 4/6/20.
|
||||
// Copyright © 2020 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
open class CarouselItem: MoleculeCollectionViewCell {
|
||||
|
||||
open var allowsPeaking = false
|
||||
var peakingLeftArrow = UIImageView(image: MVMCoreUIUtility.imageNamed("peakingRightArrow")?.withRenderingMode(.alwaysTemplate))
|
||||
var peakingRightArrow = UIImageView(image: MVMCoreUIUtility.imageNamed("peakingRightArrow")?.withRenderingMode(.alwaysTemplate))
|
||||
var peakingCover = MVMCoreUICommonViewsUtility.commonView()
|
||||
|
||||
open override func setupView() {
|
||||
super.setupView()
|
||||
|
||||
// Covers the card when peaking.
|
||||
peakingCover.backgroundColor = .white
|
||||
peakingCover.alpha = 0
|
||||
contentView.addSubview(peakingCover)
|
||||
NSLayoutConstraint.constraintPinSubview(toSuperview: peakingCover)
|
||||
|
||||
// A small arrow on the next card for when peaking.
|
||||
let ratio: CGFloat = 0.015
|
||||
peakingLeftArrow.translatesAutoresizingMaskIntoConstraints = false
|
||||
peakingLeftArrow.alpha = 0
|
||||
peakingLeftArrow.tintColor = .black
|
||||
contentView.addSubview(peakingLeftArrow)
|
||||
peakingLeftArrow.centerYAnchor.constraint(equalTo: contentView.centerYAnchor).isActive = true
|
||||
NSLayoutConstraint.scalingPinViewLeft(toSuper: peakingLeftArrow, ratio: ratio, anchor: contentView.widthAnchor)
|
||||
|
||||
peakingRightArrow.translatesAutoresizingMaskIntoConstraints = false
|
||||
peakingRightArrow.transform = CGAffineTransform(scaleX: -1, y: 1) // Flip
|
||||
peakingRightArrow.alpha = 0
|
||||
peakingRightArrow.tintColor = .black
|
||||
contentView.addSubview(peakingRightArrow)
|
||||
peakingRightArrow.centerYAnchor.constraint(equalTo: contentView.centerYAnchor).isActive = true
|
||||
NSLayoutConstraint.scalingPinViewRight(toSuper: peakingRightArrow, ratio: ratio, anchor: contentView.widthAnchor)
|
||||
}
|
||||
|
||||
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
|
||||
super.set(with: model, delegateObject, additionalData)
|
||||
guard let collectionModel = model as? CarouselItemModel else { return }
|
||||
|
||||
// Handles peaking.
|
||||
allowsPeaking = collectionModel.peakingUI ?? false
|
||||
if let peakingArrowColor = collectionModel.peakingArrowColor {
|
||||
let color = peakingArrowColor.uiColor
|
||||
peakingLeftArrow.tintColor = color
|
||||
peakingRightArrow.tintColor = color
|
||||
}
|
||||
}
|
||||
|
||||
public func setPeaking(_ peaking: Bool, animated: Bool) {
|
||||
guard allowsPeaking else {
|
||||
return
|
||||
}
|
||||
let animation = {() in
|
||||
self.peakingRightArrow.alpha = peaking ? 1 : 0
|
||||
self.peakingLeftArrow.alpha = peaking ? 1 : 0
|
||||
self.peakingCover.alpha = peaking ? 0.5 : 0
|
||||
}
|
||||
if animated {
|
||||
UIView.animate(withDuration: 0.4, animations: animation)
|
||||
} else {
|
||||
animation()
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user