ChatLayoutDelegate
@MainActor
public protocol ChatLayoutDelegate : AnyObject
CollectionViewChatLayout
delegate
-
shouldPresentHeader(_:
Default implementationat: ) CollectionViewChatLayout
will call this method to ask if it should present the header in the current layout.Default Implementation
Default implementation returns:
false
.Declaration
Swift
@MainActor func shouldPresentHeader( _ chatLayout: CollectionViewChatLayout, at sectionIndex: Int ) -> Bool
Parameters
chatLayout
CollectionViewChatLayout
reference.sectionIndex
Index of the section.
Return Value
Bool
. -
shouldPresentFooter(_:
Default implementationat: ) CollectionViewChatLayout
will call this method to ask if it should present the footer in the current layout.Default Implementation
Default implementation returns:
false
.Declaration
Swift
@MainActor func shouldPresentFooter( _ chatLayout: CollectionViewChatLayout, at sectionIndex: Int ) -> Bool
Parameters
chatLayout
CollectionViewChatLayout
reference.sectionIndex
Index of the section.
Return Value
Bool
. -
shouldPinHeaderToVisibleBounds(_:
Default implementationat: ) CollectionViewChatLayout
will call this method to ask if it should pin (stick) the header to the visible bounds in the current layout.NB: This method will be called only if the
ChatLayoutSettings.pinnableItems
is set to.supplementaryViews
Default Implementation
Default implementation returns:
false
.Declaration
Swift
@MainActor func shouldPinHeaderToVisibleBounds( _ chatLayout: CollectionViewChatLayout, at sectionIndex: Int ) -> Bool
Parameters
chatLayout
CollectionViewChatLayout
reference.sectionIndex
Index of the section.
Return Value
Bool
. -
shouldPinFooterToVisibleBounds(_:
Default implementationat: ) CollectionViewChatLayout
will call this method to ask if it should pin (stick) the footer to the visible bounds in the current layout.NB: This method will be called only if the
ChatLayoutSettings.pinnableItems
is set to.supplementaryViews
Default Implementation
Default implementation returns:
false
.Declaration
Swift
@MainActor func shouldPinFooterToVisibleBounds( _ chatLayout: CollectionViewChatLayout, at sectionIndex: Int ) -> Bool
Parameters
chatLayout
CollectionViewChatLayout
reference.sectionIndex
Index of the section.
Return Value
Bool
. -
pinningTypeForItem(_:
Default implementationat: ) CollectionViewChatLayout
will call this method to ask if it should pin (stick) the cell to the visible bounds in the current layout.NB: This method will be called only if the
ChatLayoutSettings.pinnableItems
is set to.cells
Default Implementation
Default implementation returns:
nil
.Declaration
Swift
@MainActor func pinningTypeForItem( _ chatLayout: CollectionViewChatLayout, at indexPath: IndexPath ) -> ChatItemPinningType?
Parameters
chatLayout
CollectionViewChatLayout
reference.indexPath
Index path of the cell.
Return Value
ChatItemPinningType
to configure pinning behaviour ornil
if pinning is not required. -
sizeForItem(_:
Default implementationof: at: ) CollectionViewChatLayout
will call this method to ask what size the item should have.NB:
If you are trying to speed up the layout process by returning exact item sizes in this method - do not forget to change
UICollectionReusableView.preferredLayoutAttributesFitting(...)
method and do not callsuper.preferredLayoutAttributesFitting(...)
there as it will measure theUIView
using Autolayout Engine anyway.Default Implementation
Default implementation returns:
ItemSize.auto
.Declaration
Swift
@MainActor func sizeForItem( _ chatLayout: CollectionViewChatLayout, of kind: ItemKind, at indexPath: IndexPath ) -> ItemSize
Parameters
chatLayout
CollectionViewChatLayout
reference.kind
Type of element represented by
ItemKind
.indexPath
Index path of the item.
Return Value
-
alignmentForItem(_:
Default implementationof: at: ) CollectionViewChatLayout
will call this method to ask what type of alignment the item should have.Default Implementation
Default implementation returns:
ChatItemAlignment.fullWidth
.Declaration
Swift
@MainActor func alignmentForItem( _ chatLayout: CollectionViewChatLayout, of kind: ItemKind, at indexPath: IndexPath ) -> ChatItemAlignment
Parameters
chatLayout
CollectionViewChatLayout
reference.kind
Type of element represented by
ItemKind
.indexPath
Index path of the item.
Return Value
-
initialLayoutAttributesForInsertedItem(_:
Default implementationof: at: modifying: on: ) Asks the delegate to modify a layout attributes instance so that it represents the initial visual state of an item being inserted.
The
originalAttributes
instance is a reference type, and therefore can be modified directly.Default Implementation
Default implementation sets a
ChatLayoutAttributes.alpha
to zero.Declaration
Swift
@MainActor func initialLayoutAttributesForInsertedItem( _ chatLayout: CollectionViewChatLayout, of kind: ItemKind, at indexPath: IndexPath, modifying originalAttributes: ChatLayoutAttributes, on state: InitialAttributesRequestType )
-
finalLayoutAttributesForDeletedItem(_:
Default implementationof: at: modifying: ) Asks the delegate to modify a layout attributes instance so that it represents the final visual state of an item being removed via
UICollectionView.deleteSections(_:)
.The
originalAttributes
instance is a reference type, and therefore can be modified directly.Default Implementation
Default implementation sets a
ChatLayoutAttributes.alpha
to zero.Declaration
Swift
@MainActor func finalLayoutAttributesForDeletedItem( _ chatLayout: CollectionViewChatLayout, of kind: ItemKind, at indexPath: IndexPath, modifying originalAttributes: ChatLayoutAttributes )
-
interItemSpacing(_:
Default implementationof: after: ) Returns the interval between items. If returns
nil
- the value fromChatLayoutSettings
will be used.Default Implementation
Default implementation returns:
nil
.Declaration
Swift
@MainActor func interItemSpacing( _ chatLayout: CollectionViewChatLayout, of kind: ItemKind, after indexPath: IndexPath ) -> CGFloat?
-
interSectionSpacing(_:
Default implementationafter: ) Returns the interval between sections. If returns
nil
- the value fromChatLayoutSettings
will be used.Default Implementation
Default implementation returns:
nil
.Declaration
Swift
@MainActor func interSectionSpacing( _ chatLayout: CollectionViewChatLayout, after sectionIndex: Int ) -> CGFloat?