ChatLayoutDelegate

@MainActor
public protocol ChatLayoutDelegate : AnyObject

CollectionViewChatLayout delegate

  • pinningTypeForItem(_:at:) Default implementation

    CollectionViewChatLayout will call this method to ask if it should pin (stick) the cell to the visible bounds in the current layout.

    Default Implementation

    Default implementation returns: nil.

    Declaration

    Swift

    @MainActor
    func pinningTypeForItem(
        _ chatLayout: CollectionViewChatLayout,
        at indexPath: IndexPath
    ) -> ChatItemPinningType?

    Parameters

    chatLayout
    indexPath

    Index path of the cell.

    Return Value

    ChatItemPinningType to configure pinning behaviour or nil if pinning is not required.

  • sizeForItem(_:at:) Default implementation

    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 call super.preferredLayoutAttributesFitting(...) there as it will measure the UIView using Autolayout Engine anyway.

    Default Implementation

    Default implementation returns: ItemSize.auto.

    Declaration

    Swift

    @MainActor
    func sizeForItem(
        _ chatLayout: CollectionViewChatLayout,
        at indexPath: IndexPath
    ) -> ItemSize

    Parameters

    chatLayout
    indexPath

    Index path of the item.

    Return Value

    ItemSize.

  • alignmentForItem(_:at:) Default implementation

    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,
        at indexPath: IndexPath
    ) -> ChatItemAlignment

    Parameters

    chatLayout
    indexPath

    Index path of the item.

    Return Value

    ChatItemAlignment.

  • 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,
        at indexPath: IndexPath,
        modifying originalAttributes: ChatLayoutAttributes,
        on state: InitialAttributesRequestType
    )
  • 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,
        at indexPath: IndexPath,
        modifying originalAttributes: ChatLayoutAttributes
    )
  • interItemSpacing(_:after:) Default implementation

    Returns the interval between items. If returns nil - the value from ChatLayoutSettings will be used.

    Default Implementation

    Default implementation returns: nil.

    Declaration

    Swift

    @MainActor
    func interItemSpacing(
        _ chatLayout: CollectionViewChatLayout,
        after indexPath: IndexPath
    ) -> CGFloat?
  • interSectionSpacing(_:after:) Default implementation

    Returns the interval between sections. If returns nil - the value from ChatLayoutSettings will be used.

    Default Implementation

    Default implementation returns: nil.

    Declaration

    Swift

    @MainActor
    func interSectionSpacing(
        _ chatLayout: CollectionViewChatLayout,
        after sectionIndex: Int
    ) -> CGFloat?