ChatLayout

Release Version Documentation Codecov Codacy Badge Swift Package Manager Carthage compatible Swift 5.10 Platform iOS

ChatLayout logo

目录

关于

ChatLayoutMessageKit 的替代解决方案。它使用自定义的 UICollectionViewLayout 为您提供对呈现的完全控制,以及 UICollectionView 中提供的所有工具。

特性

ChatLayout 不提供什么 (以及为什么这样是好的)

ChatLayout 是自定义的 UICollectionViewLayout,所以

示例

要运行示例项目,请克隆存储库,然后首先从 Example 目录运行 pod install

安装

ChatLayout 可通过 CocoaPodsCarthageSwiftPM 获得。有关使用详情,请参见 Example 应用程序。

如果您正在使用 cocoapods,您可以使用 pod 'ChatLayout' 安装整个软件包。如果您不需要提供的其他组件,您可以使用 pod 'ChatLayout/Core' 仅安装布局本身

贡献

ChatLayout 正在积极开发中,我们欢迎您的贡献。

如果您想为此仓库做出贡献,请阅读 贡献指南

待办事项

关于 UICollectionViewDiffableDataSource

ChatLayout 可以处理您发送到 UICollectionView 的任何更新命令,因此您也可以使用 UICollectionViewDiffableDataSource

关于补充视图

这可能很诱人,并且看起来是正确的选择,但是**不要**使用补充视图来装饰您的消息或消息组。 UICollectionView 以不同的顺序处理它们:首先是 UICollectionViewCell,之后才切换到 UICollectionReusableView。在动画期间,您很可能会遇到一些意外行为。**我强烈建议您不要使用任何 sections。**

关于 Texture

ChatLayout 可以与 Texture 一起使用,以提高自动布局性能。但请记住,它的默认包装器被硬编码为仅与 UICollectionViewFlowLayout 一起使用。 查看问题。您必须自己实现 ChatLayoutDelegate 并手动传播节点大小。

关于动画

如果您在更新期间看到奇怪或意外的动画,请检查您的数据模型以及**您发送到 UICollectionViewperformBatchUpdates 的命令**。 特别是如果您使用的是类似 DifferenceKit 的一些差异算法。 很可能您在期望看到重新加载时发送了删除/插入命令。 检查它的最简单方法是在 ChatLayout.prepare(forCollectionViewUpdates:) 方法中添加 print("\(updateItems)")ChatLayout 不知道您期望看到什么。它只是根据收到的命令处理您的更改。

许可

ChatLayoutMIT 许可证 下分发。

ChatLayout 免费提供给您使用,按原样提供。 我们不作任何保证、承诺或道歉。Caveat developer. (开发者请注意。)

文章

英语

俄语

赞助此项目

如果您发现此库有用,特别是如果您在生产中使用它,请考虑 在此处 赞助此项目。 我在业余时间开发 ChatLayout,您的赞助将帮助我继续开发并为开源社区做出贡献。 您的支持将使我能够投入更多的时间和资源到这个项目中,确保它在未来几年内保持最新和相关。

感谢您的考虑!

作者

Evgeny Kazaev, eugene.kazaev@gmail.com. Twitter ekazaev

我很乐意回答您可能遇到的任何问题。 只需创建一个 新问题