gpt4 book ai didi

ios - 如何使用 MessageKit 创建自定义单元格?

转载 作者:行者123 更新时间:2023-11-28 13:33:52 42 4
gpt4 key购买 nike

我想使用 MessageKit 创建以下自定义聊天气泡

enter image description here

我在提供的示例中使用 CustomCell 示例。但这不会根据发件人类型添加聊天气泡背景和定位。

如何创建具有相同聊天气泡背景的自定义单元格?

最佳答案

使用 MessageKit 创建自定义单元格

要创建自定义单元格,您必须创建一个继承自 UICollectionViewCell 的单元格。一旦你有了你的细胞,你需要告诉你的细胞的大小。如何做到这一点?

您必须创建一个继承自 MessageSizeCalculatorCellSizeCalculator 的类才能制作自定义单元格大小计算器

您必须创建一个继承自 MessagesCollectionViewFlowLayout 的类,并添加自定义大小计算器以计算单元格的大小。

你必须覆盖两个方法来实现:

  • messageSizeCalculators() 添加自定义单元格大小计算器
  • cellSizeCalculatorForItem(at indexPath: IndexPath) 选择要使用自定义单元格计算器的单元格

从master分支可以看到这个例子:

open class CustomMessagesFlowLayout: MessagesCollectionViewFlowLayout {

open lazy var customMessageSizeCalculator = CustomMessageSizeCalculator(layout: self)

open override func cellSizeCalculatorForItem(at indexPath: IndexPath) -> CellSizeCalculator {
let message = messagesDataSource.messageForItem(at: indexPath, in: messagesCollectionView)
if case .custom = message.kind {
return customMessageSizeCalculator
}
return super.cellSizeCalculatorForItem(at: indexPath)
}

open override func messageSizeCalculators() -> [MessageSizeCalculator] {
var superCalculators = super.messageSizeCalculators()
// Append any of your custom `MessageSizeCalculator` if you wish for the convenience
// functions to work such as `setMessageIncoming...` or `setMessageOutgoing...`
superCalculators.append(customMessageSizeCalculator)
return superCalculators
}
}

open class CustomMessageSizeCalculator: MessageSizeCalculator {

public override init(layout: MessagesCollectionViewFlowLayout? = nil) {
super.init()
self.layout = layout
}

open override func sizeForItem(at indexPath: IndexPath) -> CGSize {
guard let layout = layout else { return .zero }
let collectionViewWidth = layout.collectionView?.bounds.width ?? 0
let contentInset = layout.collectionView?.contentInset ?? .zero
let inset = layout.sectionInset.left + layout.sectionInset.right + contentInset.left + contentInset.right
return CGSize(width: collectionViewWidth - inset, height: 44)
}

}

你可以看看这个issue on GitHub

使用 MessageKit 创建基于 MessageBubble 的单元格

MessageContentCellMessageKit 使用的类在聊天气泡中显示您的消息

你可以通过扩展这个类来创建一个单元格:

import MessageKit
import UIKit

open class CustomCell: MessageContentCell {

open override func configure(with message: MessageType, at indexPath: IndexPath, and messagesCollectionView: MessagesCollectionView) {
super.configure(with: message, at: indexPath, and: messagesCollectionView)


}

override open func layoutAccessoryView(with attributes: MessagesCollectionViewLayoutAttributes) {
// Accessory view is always on the opposite side of avatar
}


}

如果要扩展其他Cells

关于ios - 如何使用 MessageKit 创建自定义单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56958482/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com