Making few properties public.
Constraint fixes.
This commit is contained in:
parent
50d20704e7
commit
3970b34719
@ -10,7 +10,7 @@ import UIKit
|
|||||||
|
|
||||||
open class Carousel: View {
|
open class Carousel: View {
|
||||||
|
|
||||||
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
|
public let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: MVMCoreUISplitViewController.getDetailViewWidth(), height: 300), collectionViewLayout: UICollectionViewFlowLayout())
|
||||||
|
|
||||||
/// The current index of the collection view. Includes dummy cells when looping.
|
/// The current index of the collection view. Includes dummy cells when looping.
|
||||||
var currentIndex = 0
|
var currentIndex = 0
|
||||||
@ -26,7 +26,7 @@ open class Carousel: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// The number of pages that there are. Used for the page control and for calculations. Should not include the looping dummy cells. Be sure to set this if subclassing and not using the molecules.
|
/// The number of pages that there are. Used for the page control and for calculations. Should not include the looping dummy cells. Be sure to set this if subclassing and not using the molecules.
|
||||||
var numberOfPages = 0
|
open var numberOfPages = 0
|
||||||
|
|
||||||
/// The json for the molecules.
|
/// The json for the molecules.
|
||||||
var molecules: [MoleculeModelProtocol]?
|
var molecules: [MoleculeModelProtocol]?
|
||||||
@ -35,10 +35,10 @@ open class Carousel: View {
|
|||||||
var itemAlignment = UICollectionView.ScrollPosition.left
|
var itemAlignment = UICollectionView.ScrollPosition.left
|
||||||
|
|
||||||
/// From 0-1. The item width as a percent of the carousel width.
|
/// From 0-1. The item width as a percent of the carousel width.
|
||||||
var itemWidthPercent: Float = 1
|
public var itemWidthPercent: Float = 1
|
||||||
|
|
||||||
/// The height of the carousel. Default is 300.
|
/// The height of the carousel. Default is 300.
|
||||||
var collectionViewHeight: NSLayoutConstraint?
|
public var collectionViewHeight: NSLayoutConstraint?
|
||||||
|
|
||||||
/// The view that we use for paging
|
/// The view that we use for paging
|
||||||
var pagingView: (UIView & MVMCoreUIPagingProtocol)?
|
var pagingView: (UIView & MVMCoreUIPagingProtocol)?
|
||||||
@ -65,7 +65,7 @@ open class Carousel: View {
|
|||||||
addSubview(collectionView)
|
addSubview(collectionView)
|
||||||
bottomPin = NSLayoutConstraint.constraintPinSubview(toSuperview: collectionView)?[ConstraintBot] as? NSLayoutConstraint
|
bottomPin = NSLayoutConstraint.constraintPinSubview(toSuperview: collectionView)?[ConstraintBot] as? NSLayoutConstraint
|
||||||
|
|
||||||
collectionViewHeight = collectionView.heightAnchor.constraint(equalToConstant: 300)
|
collectionViewHeight = collectionView.heightAnchor.constraint(greaterThanOrEqualToConstant: 300)
|
||||||
collectionViewHeight?.isActive = false
|
collectionViewHeight?.isActive = false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,6 +114,7 @@ open class Carousel: View {
|
|||||||
layout.scrollDirection = .horizontal
|
layout.scrollDirection = .horizontal
|
||||||
layout.minimumLineSpacing = CGFloat(carouselModel?.spacing ?? 1)
|
layout.minimumLineSpacing = CGFloat(carouselModel?.spacing ?? 1)
|
||||||
layout.minimumInteritemSpacing = 0
|
layout.minimumInteritemSpacing = 0
|
||||||
|
layout.itemSize = CGSize(width: MVMCoreUISplitViewController.getDetailViewWidth(), height: 300)
|
||||||
collectionView.collectionViewLayout = layout
|
collectionView.collectionViewLayout = layout
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,12 +191,12 @@ open class Carousel: View {
|
|||||||
pagingView.translatesAutoresizingMaskIntoConstraints = false
|
pagingView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
addSubview(pagingView)
|
addSubview(pagingView)
|
||||||
pagingView.centerXAnchor.constraint(equalTo: collectionView.centerXAnchor).isActive = true
|
pagingView.centerXAnchor.constraint(equalTo: collectionView.centerXAnchor).isActive = true
|
||||||
collectionView.bottomAnchor.constraint(equalTo: pagingView.centerYAnchor, constant: position).isActive = true
|
collectionView.bottomAnchor.constraint(equalTo: pagingView.topAnchor, constant: position).isActive = true
|
||||||
bottomAnchor.constraint(greaterThanOrEqualTo: pagingView.bottomAnchor).isActive = true
|
bottomAnchor.constraint(greaterThanOrEqualTo: pagingView.bottomAnchor).isActive = true
|
||||||
bottomPin?.isActive = false
|
bottomPin?.isActive = false
|
||||||
bottomPin = bottomAnchor.constraint(equalTo: collectionView.bottomAnchor)
|
bottomPin = bottomAnchor.constraint(equalTo: collectionView.bottomAnchor)
|
||||||
bottomPin?.priority = .defaultLow
|
bottomPin?.priority = .defaultLow
|
||||||
bottomPin?.isActive = true
|
bottomPin?.isActive = false
|
||||||
|
|
||||||
pagingView.setNumberOfPages(numberOfPages)
|
pagingView.setNumberOfPages(numberOfPages)
|
||||||
(pagingView as? MVMCoreUIViewConstrainingProtocol)?.alignHorizontal?(.fill)
|
(pagingView as? MVMCoreUIViewConstrainingProtocol)?.alignHorizontal?(.fill)
|
||||||
@ -230,7 +231,7 @@ open class Carousel: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func setAccessiblity(_ cell: UICollectionViewCell?, index: Int) {
|
public func setAccessiblity(_ cell: UICollectionViewCell?, index: Int) {
|
||||||
guard let cell = cell else {
|
guard let cell = cell else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -252,7 +253,7 @@ open class Carousel: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extension Carousel: UICollectionViewDelegateFlowLayout {
|
extension Carousel: UICollectionViewDelegateFlowLayout {
|
||||||
public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
|
||||||
let itemWidth = collectionView.bounds.width * CGFloat(itemWidthPercent)
|
let itemWidth = collectionView.bounds.width * CGFloat(itemWidthPercent)
|
||||||
return CGSize(width: itemWidth, height: collectionView.bounds.height)
|
return CGSize(width: itemWidth, height: collectionView.bounds.height)
|
||||||
}
|
}
|
||||||
@ -263,11 +264,11 @@ extension Carousel: UICollectionViewDelegateFlowLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extension Carousel: UICollectionViewDataSource {
|
extension Carousel: UICollectionViewDataSource {
|
||||||
public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
open func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||||||
return molecules?.count ?? 0
|
return molecules?.count ?? 0
|
||||||
}
|
}
|
||||||
|
|
||||||
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
||||||
guard let molecule = molecules?[indexPath.row],
|
guard let molecule = molecules?[indexPath.row],
|
||||||
let moleculeInfo = getMoleculeInfo(with: molecule, delegateObject: nil) else {
|
let moleculeInfo = getMoleculeInfo(with: molecule, delegateObject: nil) else {
|
||||||
return UICollectionViewCell()
|
return UICollectionViewCell()
|
||||||
@ -343,6 +344,8 @@ extension Carousel: UIScrollViewDelegate {
|
|||||||
|
|
||||||
// Let the pager know our progress if needed.
|
// Let the pager know our progress if needed.
|
||||||
pagingView?.scrollViewDidScroll?(collectionView)
|
pagingView?.scrollViewDidScroll?(collectionView)
|
||||||
|
|
||||||
|
collectionView.collectionViewLayout.invalidateLayout()
|
||||||
}
|
}
|
||||||
|
|
||||||
public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
|
public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user