update collection for sizing properly

This commit is contained in:
Pfeil, Scott Robert 2020-04-22 21:03:13 -04:00
parent 79b3b9b0c5
commit 03abdd3a91
3 changed files with 20 additions and 3 deletions

View File

@ -10,6 +10,11 @@ import Foundation
open class CollectionView: UICollectionView, MVMCoreViewProtocol { open class CollectionView: UICollectionView, MVMCoreViewProtocol {
/// A block that gets called on tableview frame changes
public var frameChangeAction: (() -> Void)?
private var previousFrame = CGRect.zero
private var initialSetupPerformed = false private var initialSetupPerformed = false
private func initialSetup() { private func initialSetup() {
@ -29,6 +34,14 @@ open class CollectionView: UICollectionView, MVMCoreViewProtocol {
initialSetup() initialSetup()
} }
open override func layoutSubviews() {
super.layoutSubviews()
if frame != previousFrame {
frameChangeAction?()
}
previousFrame = frame
}
public func updateView(_ size: CGFloat) { public func updateView(_ size: CGFloat) {
for cell in visibleCells { for cell in visibleCells {
(cell as? MVMCoreViewProtocol)?.updateView(size) (cell as? MVMCoreViewProtocol)?.updateView(size)

View File

@ -11,7 +11,7 @@ import Foundation
/// A base view controller with a collection view. /// A base view controller with a collection view.
@objc open class ProgrammaticCollectionViewController: ScrollingViewController { @objc open class ProgrammaticCollectionViewController: ScrollingViewController {
public var collectionView: UICollectionView? public var collectionView: CollectionView?
public var topConstraint: NSLayoutConstraint? public var topConstraint: NSLayoutConstraint?
public var bottomConstraint: NSLayoutConstraint? public var bottomConstraint: NSLayoutConstraint?
@ -49,7 +49,7 @@ import Foundation
} }
/// Creates the collection view. /// Creates the collection view.
open func createCollectionView() -> UICollectionView { open func createCollectionView() -> CollectionView {
let collection = CollectionView(frame: .zero, collectionViewLayout: createCollectionViewLayout()) let collection = CollectionView(frame: .zero, collectionViewLayout: createCollectionViewLayout())
collection.dataSource = self collection.dataSource = self
collection.delegate = self collection.delegate = self

View File

@ -22,7 +22,7 @@ import Foundation
/// Updates the padding for flexible space (header or footer) /// Updates the padding for flexible space (header or footer)
private func updateFlexibleSpace() { private func updateFlexibleSpace() {
guard false,let collectionView = collectionView else { return } guard let collectionView = collectionView else { return }
let minimumSpace: CGFloat = minimumFillSpace() let minimumSpace: CGFloat = minimumFillSpace()
var currentSpace: CGFloat = 0 var currentSpace: CGFloat = 0
@ -126,6 +126,10 @@ import Foundation
override open func viewDidLoad() { override open func viewDidLoad() {
super.viewDidLoad() super.viewDidLoad()
// Do any additional setup after loading the view. // Do any additional setup after loading the view.
collectionView?.frameChangeAction = { [weak self] in
self?.invalidateCollectionLayout()
}
} }
//MARK: - Spacing //MARK: - Spacing