mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-29 15:52:40 +00:00
BubbleReactionsView: Add alignement option (left or right).
This commit is contained in:
parent
14dc04f651
commit
7ff97f1173
1 changed files with 40 additions and 3 deletions
|
@ -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() {
|
||||
|
|
Loading…
Reference in a new issue