From 4dbf9ccdda11125cb37fbcbdf9f77bdd3d060597 Mon Sep 17 00:00:00 2001 From: zhongwuzw Date: Tue, 22 May 2018 18:19:33 +0800 Subject: [PATCH 1/3] Added convenience method to set properties for all MessageSizeCalculators --- CHANGELOG.md | 5 ++ .../MessagesCollectionViewFlowLayout.swift | 66 +++++++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb04451f..ab6503c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ The changelog for `MessageKit`. Also see the [releases](https://github.com/Messa ## Upcoming release +### Added + +- Added convenience method to set properties for all `MessageSizeCalculator`s. +[#697](https://github.com/MessageKit/MessageKit/pull/697) by [@zhongwuzw](https://github.com/zhongwuzw). + ## [[Prerelease] 1.0.0-beta.1](https://github.com/MessageKit/MessageKit/releases/tag/1.0.0-beta.1) ### Added diff --git a/Sources/Layout/MessagesCollectionViewFlowLayout.swift b/Sources/Layout/MessagesCollectionViewFlowLayout.swift index a3ee26a7..e84d90cc 100644 --- a/Sources/Layout/MessagesCollectionViewFlowLayout.swift +++ b/Sources/Layout/MessagesCollectionViewFlowLayout.swift @@ -155,4 +155,70 @@ open class MessagesCollectionViewFlowLayout: UICollectionViewFlowLayout { let calculator = cellSizeCalculatorForItem(at: indexPath) return calculator.sizeForItem(at: indexPath) } + + /** Set `incomingAvatarSize` of all `MessageSizeCalculator`s */ + open func setMessageIncomingAvatarSize(_ newSize: CGSize) { + messageSizeCalculators().forEach { $0.incomingAvatarSize = newSize } + } + + /** Set `outgoingAvatarSize` of all `MessageSizeCalculator`s */ + open func setMessageOutgoingAvatarSize(_ newSize: CGSize) { + messageSizeCalculators().forEach { $0.outgoingAvatarSize = newSize } + } + + /** Set `incomingAvatarPosition` of all `MessageSizeCalculator`s */ + open func setMessageIncomingAvatarPosition(_ newPosition: AvatarPosition) { + messageSizeCalculators().forEach { $0.incomingAvatarPosition = newPosition } + } + + /** Set `outgoingAvatarPosition` of all `MessageSizeCalculator`s */ + open func setMessageOutgoingAvatarPosition(_ newPosition: AvatarPosition) { + messageSizeCalculators().forEach { $0.outgoingAvatarPosition = newPosition } + } + + /** Set `incomingMessagePadding` of all `MessageSizeCalculator`s */ + open func setMessageIncomingMessagePadding(_ newPadding: UIEdgeInsets) { + messageSizeCalculators().forEach { $0.incomingMessagePadding = newPadding } + } + + /** Set `outgoingMessagePadding` of all `MessageSizeCalculator`s */ + open func setMessageOutgoingMessagePadding(_ newPadding: UIEdgeInsets) { + messageSizeCalculators().forEach { $0.outgoingMessagePadding = newPadding } + } + + /** Set `incomingCellTopLabelAlignment` of all `MessageSizeCalculator`s */ + open func setMessageIncomingCellTopLabelAlignment(_ newAlignment: LabelAlignment) { + messageSizeCalculators().forEach { $0.incomingCellTopLabelAlignment = newAlignment } + } + + /** Set `outgoingCellTopLabelAlignment` of all `MessageSizeCalculator`s */ + open func setMessageOutgoingCellTopLabelAlignment(_ newAlignment: LabelAlignment) { + messageSizeCalculators().forEach { $0.outgoingCellTopLabelAlignment = newAlignment } + } + + /** Set `incomingMessageTopLabelAlignment` of all `MessageSizeCalculator`s */ + open func setMessageIncomingMessageTopLabelAlignment(_ newAlignment: LabelAlignment) { + messageSizeCalculators().forEach { $0.incomingMessageTopLabelAlignment = newAlignment } + } + + /** Set `outgoingMessageTopLabelAlignment` of all `MessageSizeCalculator`s */ + open func setMessageOutgoingMessageTopLabelAlignment(_ newAlignment: LabelAlignment) { + messageSizeCalculators().forEach { $0.outgoingMessageTopLabelAlignment = newAlignment } + } + + /** Set `incomingMessageBottomLabelAlignment` of all `MessageSizeCalculator`s */ + open func setMessageIncomingMessageBottomLabelAlignment(_ newAlignment: LabelAlignment) { + messageSizeCalculators().forEach { $0.incomingMessageBottomLabelAlignment = newAlignment } + } + + /** Set `outgoingMessageBottomLabelAlignment` of all `MessageSizeCalculator`s */ + open func setMessageOutgoingMessageBottomLabelAlignment(_ newAlignment: LabelAlignment) { + messageSizeCalculators().forEach { $0.outgoingMessageBottomLabelAlignment = newAlignment } + } + + /** Get all `MessageSizeCalculator`s */ + open func messageSizeCalculators() -> [MessageSizeCalculator] { + return [textMessageSizeCalculator, attributedTextMessageSizeCalculator, emojiMessageSizeCalculator, photoMessageSizeCalculator, videoMessageSizeCalculator, locationMessageSizeCalculator] + } + } From 6d667fcaca96f69c3c7ce991627de7f483f56fe0 Mon Sep 17 00:00:00 2001 From: zhongwuzw Date: Tue, 22 May 2018 20:17:00 +0800 Subject: [PATCH 2/3] Replace comments --- .../MessagesCollectionViewFlowLayout.swift | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Sources/Layout/MessagesCollectionViewFlowLayout.swift b/Sources/Layout/MessagesCollectionViewFlowLayout.swift index e84d90cc..11289a00 100644 --- a/Sources/Layout/MessagesCollectionViewFlowLayout.swift +++ b/Sources/Layout/MessagesCollectionViewFlowLayout.swift @@ -33,7 +33,7 @@ open class MessagesCollectionViewFlowLayout: UICollectionViewFlowLayout { return MessagesCollectionViewLayoutAttributes.self } - /** The `MessagesCollectionView` that owns this layout object. */ + /// The `MessagesCollectionView` that owns this layout object. public var messagesCollectionView: MessagesCollectionView { guard let messagesCollectionView = collectionView as? MessagesCollectionView else { fatalError(MessageKitError.layoutUsedOnForeignType) @@ -41,7 +41,7 @@ open class MessagesCollectionViewFlowLayout: UICollectionViewFlowLayout { return messagesCollectionView } - /** The `MessagesDataSource` for the layout's collection view. */ + /// The `MessagesDataSource` for the layout's collection view. public var messagesDataSource: MessagesDataSource { guard let messagesDataSource = messagesCollectionView.messagesDataSource else { fatalError(MessageKitError.nilMessagesDataSource) @@ -49,7 +49,7 @@ open class MessagesCollectionViewFlowLayout: UICollectionViewFlowLayout { return messagesDataSource } - /** The `MessagesLayoutDelegate` for the layout's collection view. */ + /// The `MessagesLayoutDelegate` for the layout's collection view. public var messagesLayoutDelegate: MessagesLayoutDelegate { guard let messagesLayoutDelegate = messagesCollectionView.messagesLayoutDelegate else { fatalError(MessageKitError.nilMessagesLayoutDelegate) @@ -156,67 +156,67 @@ open class MessagesCollectionViewFlowLayout: UICollectionViewFlowLayout { return calculator.sizeForItem(at: indexPath) } - /** Set `incomingAvatarSize` of all `MessageSizeCalculator`s */ + /// Set `incomingAvatarSize` of all `MessageSizeCalculator`s open func setMessageIncomingAvatarSize(_ newSize: CGSize) { messageSizeCalculators().forEach { $0.incomingAvatarSize = newSize } } - /** Set `outgoingAvatarSize` of all `MessageSizeCalculator`s */ + /// Set `outgoingAvatarSize` of all `MessageSizeCalculator`s open func setMessageOutgoingAvatarSize(_ newSize: CGSize) { messageSizeCalculators().forEach { $0.outgoingAvatarSize = newSize } } - /** Set `incomingAvatarPosition` of all `MessageSizeCalculator`s */ + /// Set `incomingAvatarPosition` of all `MessageSizeCalculator`s open func setMessageIncomingAvatarPosition(_ newPosition: AvatarPosition) { messageSizeCalculators().forEach { $0.incomingAvatarPosition = newPosition } } - /** Set `outgoingAvatarPosition` of all `MessageSizeCalculator`s */ + /// Set `outgoingAvatarPosition` of all `MessageSizeCalculator`s open func setMessageOutgoingAvatarPosition(_ newPosition: AvatarPosition) { messageSizeCalculators().forEach { $0.outgoingAvatarPosition = newPosition } } - /** Set `incomingMessagePadding` of all `MessageSizeCalculator`s */ + /// Set `incomingMessagePadding` of all `MessageSizeCalculator`s open func setMessageIncomingMessagePadding(_ newPadding: UIEdgeInsets) { messageSizeCalculators().forEach { $0.incomingMessagePadding = newPadding } } - /** Set `outgoingMessagePadding` of all `MessageSizeCalculator`s */ + /// Set `outgoingMessagePadding` of all `MessageSizeCalculator`s open func setMessageOutgoingMessagePadding(_ newPadding: UIEdgeInsets) { messageSizeCalculators().forEach { $0.outgoingMessagePadding = newPadding } } - /** Set `incomingCellTopLabelAlignment` of all `MessageSizeCalculator`s */ + /// Set `incomingCellTopLabelAlignment` of all `MessageSizeCalculator`s open func setMessageIncomingCellTopLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.incomingCellTopLabelAlignment = newAlignment } } - /** Set `outgoingCellTopLabelAlignment` of all `MessageSizeCalculator`s */ + /// Set `outgoingCellTopLabelAlignment` of all `MessageSizeCalculator`s open func setMessageOutgoingCellTopLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.outgoingCellTopLabelAlignment = newAlignment } } - /** Set `incomingMessageTopLabelAlignment` of all `MessageSizeCalculator`s */ + /// Set `incomingMessageTopLabelAlignment` of all `MessageSizeCalculator`s open func setMessageIncomingMessageTopLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.incomingMessageTopLabelAlignment = newAlignment } } - /** Set `outgoingMessageTopLabelAlignment` of all `MessageSizeCalculator`s */ + /// Set `outgoingMessageTopLabelAlignment` of all `MessageSizeCalculator`s open func setMessageOutgoingMessageTopLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.outgoingMessageTopLabelAlignment = newAlignment } } - /** Set `incomingMessageBottomLabelAlignment` of all `MessageSizeCalculator`s */ + /// Set `incomingMessageBottomLabelAlignment` of all `MessageSizeCalculator`s open func setMessageIncomingMessageBottomLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.incomingMessageBottomLabelAlignment = newAlignment } } - /** Set `outgoingMessageBottomLabelAlignment` of all `MessageSizeCalculator`s */ + /// Set `outgoingMessageBottomLabelAlignment` of all `MessageSizeCalculator`s open func setMessageOutgoingMessageBottomLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.outgoingMessageBottomLabelAlignment = newAlignment } } - /** Get all `MessageSizeCalculator`s */ + /// Get all `MessageSizeCalculator`s open func messageSizeCalculators() -> [MessageSizeCalculator] { return [textMessageSizeCalculator, attributedTextMessageSizeCalculator, emojiMessageSizeCalculator, photoMessageSizeCalculator, videoMessageSizeCalculator, locationMessageSizeCalculator] } From 386ab8027ff40748834f498c05bf4eb15df159a1 Mon Sep 17 00:00:00 2001 From: zhongwuzw Date: Wed, 23 May 2018 10:36:40 +0800 Subject: [PATCH 3/3] Change helper method from open to public --- .../MessagesCollectionViewFlowLayout.swift | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Sources/Layout/MessagesCollectionViewFlowLayout.swift b/Sources/Layout/MessagesCollectionViewFlowLayout.swift index 11289a00..c34f5e0f 100644 --- a/Sources/Layout/MessagesCollectionViewFlowLayout.swift +++ b/Sources/Layout/MessagesCollectionViewFlowLayout.swift @@ -157,62 +157,62 @@ open class MessagesCollectionViewFlowLayout: UICollectionViewFlowLayout { } /// Set `incomingAvatarSize` of all `MessageSizeCalculator`s - open func setMessageIncomingAvatarSize(_ newSize: CGSize) { + public func setMessageIncomingAvatarSize(_ newSize: CGSize) { messageSizeCalculators().forEach { $0.incomingAvatarSize = newSize } } /// Set `outgoingAvatarSize` of all `MessageSizeCalculator`s - open func setMessageOutgoingAvatarSize(_ newSize: CGSize) { + public func setMessageOutgoingAvatarSize(_ newSize: CGSize) { messageSizeCalculators().forEach { $0.outgoingAvatarSize = newSize } } /// Set `incomingAvatarPosition` of all `MessageSizeCalculator`s - open func setMessageIncomingAvatarPosition(_ newPosition: AvatarPosition) { + public func setMessageIncomingAvatarPosition(_ newPosition: AvatarPosition) { messageSizeCalculators().forEach { $0.incomingAvatarPosition = newPosition } } /// Set `outgoingAvatarPosition` of all `MessageSizeCalculator`s - open func setMessageOutgoingAvatarPosition(_ newPosition: AvatarPosition) { + public func setMessageOutgoingAvatarPosition(_ newPosition: AvatarPosition) { messageSizeCalculators().forEach { $0.outgoingAvatarPosition = newPosition } } /// Set `incomingMessagePadding` of all `MessageSizeCalculator`s - open func setMessageIncomingMessagePadding(_ newPadding: UIEdgeInsets) { + public func setMessageIncomingMessagePadding(_ newPadding: UIEdgeInsets) { messageSizeCalculators().forEach { $0.incomingMessagePadding = newPadding } } /// Set `outgoingMessagePadding` of all `MessageSizeCalculator`s - open func setMessageOutgoingMessagePadding(_ newPadding: UIEdgeInsets) { + public func setMessageOutgoingMessagePadding(_ newPadding: UIEdgeInsets) { messageSizeCalculators().forEach { $0.outgoingMessagePadding = newPadding } } /// Set `incomingCellTopLabelAlignment` of all `MessageSizeCalculator`s - open func setMessageIncomingCellTopLabelAlignment(_ newAlignment: LabelAlignment) { + public func setMessageIncomingCellTopLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.incomingCellTopLabelAlignment = newAlignment } } /// Set `outgoingCellTopLabelAlignment` of all `MessageSizeCalculator`s - open func setMessageOutgoingCellTopLabelAlignment(_ newAlignment: LabelAlignment) { + public func setMessageOutgoingCellTopLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.outgoingCellTopLabelAlignment = newAlignment } } /// Set `incomingMessageTopLabelAlignment` of all `MessageSizeCalculator`s - open func setMessageIncomingMessageTopLabelAlignment(_ newAlignment: LabelAlignment) { + public func setMessageIncomingMessageTopLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.incomingMessageTopLabelAlignment = newAlignment } } /// Set `outgoingMessageTopLabelAlignment` of all `MessageSizeCalculator`s - open func setMessageOutgoingMessageTopLabelAlignment(_ newAlignment: LabelAlignment) { + public func setMessageOutgoingMessageTopLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.outgoingMessageTopLabelAlignment = newAlignment } } /// Set `incomingMessageBottomLabelAlignment` of all `MessageSizeCalculator`s - open func setMessageIncomingMessageBottomLabelAlignment(_ newAlignment: LabelAlignment) { + public func setMessageIncomingMessageBottomLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.incomingMessageBottomLabelAlignment = newAlignment } } /// Set `outgoingMessageBottomLabelAlignment` of all `MessageSizeCalculator`s - open func setMessageOutgoingMessageBottomLabelAlignment(_ newAlignment: LabelAlignment) { + public func setMessageOutgoingMessageBottomLabelAlignment(_ newAlignment: LabelAlignment) { messageSizeCalculators().forEach { $0.outgoingMessageBottomLabelAlignment = newAlignment } }