BubbleReactionsView: Add alignement option (left or right).

This commit is contained in:
SBiOSoftWhare 2022-01-18 14:23:07 +01:00
parent 14dc04f651
commit 7ff97f1173

View file

@ -18,6 +18,13 @@ import Foundation
import MatrixSDK
import Reusable
import DGCollectionViewLeftAlignFlowLayout
import UIKit
/// BubbleReactionsView items alignement
enum BubbleReactionsViewAlignement {
case left
case right
}
@objcMembers
final class BubbleReactionsView: UIView, NibOwnerLoadable {
@ -51,6 +58,12 @@ final class BubbleReactionsView: UIView, NibOwnerLoadable {
}
}
var alignment: BubbleReactionsViewAlignement = .left {
didSet {
self.updateCollectionViewLayout(for: alignment)
}
}
// MARK: - Setup
private func commonInit() {
@ -87,7 +100,18 @@ final class BubbleReactionsView: UIView, NibOwnerLoadable {
self.collectionView.isScrollEnabled = false
self.collectionView.delegate = self
self.collectionView.dataSource = self
self.collectionView.collectionViewLayout = DGCollectionViewLeftAlignFlowLayout()
self.alignment = .left
self.collectionView.register(cellType: BubbleReactionViewCell.self)
self.collectionView.register(cellType: BubbleReactionActionViewCell.self)
self.collectionView.reloadData()
}
private func updateCollectionViewLayout(for alignement: BubbleReactionsViewAlignement) {
let collectionViewLayout = self.collectionViewLayout(for: alignement)
self.collectionView.collectionViewLayout = collectionViewLayout
if let collectionViewFlowLayout = self.collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
collectionViewFlowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize
@ -95,9 +119,22 @@ final class BubbleReactionsView: UIView, NibOwnerLoadable {
collectionViewFlowLayout.minimumLineSpacing = Constants.minimumLineSpacing
}
self.collectionView.register(cellType: BubbleReactionViewCell.self)
self.collectionView.register(cellType: BubbleReactionActionViewCell.self)
self.collectionView.reloadData()
self.collectionView.collectionViewLayout.invalidateLayout()
}
private func collectionViewLayout(for alignement: BubbleReactionsViewAlignement) -> UICollectionViewLayout {
let collectionViewLayout: UICollectionViewLayout
switch alignment {
case .left:
collectionViewLayout = DGCollectionViewLeftAlignFlowLayout()
case .right:
collectionViewLayout = CollectionViewRightAlignFlowLayout()
}
return collectionViewLayout
}
private func setupLongPressGestureRecognizer() {