一个社区驱动的 JSQMessagesViewController 替代方案
Xcode 12 中的 Swift 5.3 添加了支持 Swift 包中的资源。您可以通过输入其仓库 URL 直接添加 MessageKit 包到您的项目中
https://github.com/MessageKit/MessageKit
旧版本的 Swift 和 Xcode 不支持通过 SPM 使用 MessageKit。
对于 iOS 13 或 Swift 5.x,请使用 4.3.0 版本
对于 iOS 12 或 CocoaPods,请使用 3.8.0 版本
对于 iOS 11,请使用 3.3.0 版本
对于 iOS 9 和 iOS 10,请使用 3.1.1 版本
我们建议您首先查看 示例 项目,或者在 Stack Overflow 上使用 "messagekit" 标签提出问题。 您还可以查看 GitHub 上带有 "Question" 标签的先前问题。
有关如何使用 MessageInputBar 的更多信息,请参阅其所基于的依赖项 InputBarAccessoryView。您也可以查看这个简短的指南
在此处查看完整的文档 here。
每个默认 cell 都是 MessageContentCell
的子类,它有 7 个部分。 从上到下,我们有一个:cellTopLabel
、messageTopLabel
、messageContainerView
、messageBottomLabel
、cellBottomLabel
,avatarView
和 accessoryView
分别位于两侧。 上面我们看到了基本的 TextMessageCell
,它使用 MessageLabel
作为其主要内容。
这种结构将允许您创建一个适合您需求的布局,因为您可以自定义每个布局的大小、外观和填充。 如果您需要更高级的东西,您可以实现一个自定义 cell,我们在 示例 项目中展示了如何操作。
来自 InputBarAccessoryView 的第三方依赖项 InputBarAccessoryView
是一种灵活而强大的方式,可以创建您想要的任何类型的输入布局。查看仓库和示例以获取更多信息。
为给定消息渲染的 cell 类型基于 MessageKind
public enum MessageKind {
case text(String) // TextMessageCell
case attributedText(NSAttributedString) // TextMessageCell
case photo(MediaItem) // MediaMessageCell
case video(MediaItem) // MediaMessageCell
case location(LocationItem) // LocationMessageCell
case emoji(String) // TextMessageCell
case audio(AudioItem) // AudioMessageCell
case contact(ContactItem) // ContactMessageCell
case linkPreview(LinkItem) // LinkPreviewMessageCell
/// A custom message.
/// - Note: Using this case requires that you implement the following methods and handle this case:
/// - MessagesDataSource: customCell(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> UICollectionViewCell
/// - MessagesLayoutDelegate: customCellSizeCalculator(for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) -> CellSizeCalculator
case custom(Any?)
}
如果您选择使用 .custom
类型,则您负责所有 cell 的布局。 任何 UICollectionViewCell
都可以为自定义 cell 返回,这意味着您从 MessageDisplayDelegate
提供的任何样式都不会影响您的自定义 cell。 即使您从 MessageContentCell
继承您的 cell。 阅读更多关于自定义 cell 的信息
太棒了!首先查看这些内容。
查看 Releases,了解我们接下来要做什么。
对于 MessageKit 有疑问或问题?创建一个 issue!
有兴趣为 MessageKit 做贡献吗? 点击此处加入我们的 Slack。
将您的应用添加到使用此库的应用列表中,并创建一个 pull request。
请提供署名,我们将不胜感激。
非常感谢这个项目的 贡献者。
MessageKit 在 MIT 许可证 下发布。
灵感来自 JSQMessagesViewController 👈 💯