Project Icon

SwiftyChat

SwiftUI聊天界面开发工具包

SwiftyChat是一个支持SwiftUI的开源聊天界面库,兼容多样的消息格式如文本、图片、视频等。它提供易于自定义的组件和灵活调整的样式,能快速帮助开发者构建和定制聊天应用。通过清晰的安装指南和丰富的代码示例,使得集成和功能扩展变得容易。

项目介绍:SwiftyChat

SwiftyChat 是一个为 iOS 开发者设计的简单聊天界面库,它利用 SwiftUI 的优势提供了即插即用的消息功能。该项目旨在帮助开发者快速创建功能丰富且灵活的聊天应用。

项目背景

SwiftyChat 提供了一套易于上手的默认消息单元格,使得开发者可以快速启用聊天特性。此外,它还支持多种不同类型的消息格式,为用户提供丰富的交互体验。

项目特性

  • 支持属性字符串:利用 SwiftUI 的特性,SwiftyChat 支持富文本消息。
  • 横屏支持:在横屏模式下会自动调整消息单元格的宽度。
  • 用户头像显示:可以选择显示或隐藏,并且可自定义头像的位置。
  • 快速关闭键盘:点击聊天界面任意空白区域即可收起键盘。
  • 多行输入框:使用户可以输入长文本。
  • 滚动到底部:单击按钮可以快速滚动到最新消息。
  • 画中画模式:支持后台视频播放。
  • 自定义消息单元格:支持开发者自定义消息显示样式。
  • 特定边角圆角:为文本消息添加更具个性化的边角修饰。

快速预览

SwiftyChat 提供了基本和高级两种示例预览。基本示例展示了文本消息在浅色和深色模式下的界面,而高级示例则展示了包括联系人、快捷回复、文本、图片、地图、轮播和上下文菜单在内的多种消息类型的界面。

安装方式

开发者可以通过 Swift Package Manager (SPM) 安装 SwiftyChat,只需在项目中添加以下地址即可:

https://github.com/EnesKaraosman/SwiftyChat.git

消息种类

SwiftyChat 支持多种消息类型,包括:

  • 文本消息
  • 图片消息(支持本地和远程)
  • 位置消息(地图展示)
  • 联系人消息
  • 快捷回复(多项选择)
  • 轮播消息
  • 视频消息

使用范例

  1. ChatView

要使用 SwiftyChat,开发者只需创建一个 ChatView 视图,并传入消息和输入框。可以通过简单的代码初始化并运行 SwiftyChat:

import SwiftyChat
import SwiftyChatMock

@State private var scrollToBottom = false
@State private var messages: [MockMessages.ChatMessageItem] = []

ChatView<MockMessages.ChatMessageItem, MockMessages.ChatUserItem>(
    messages: $messages,
    scrollToBottom: $scrollToBottom
) {
    // 在这里使用 InputView
}
.environmentObject(
    ChatMessageCellStyle()
)
.onReceive(
    messages.debounce(for: .milliseconds(650), scheduler: RunLoop.main),
    perform: { _ in
        scrollToBottom = true
    }
)
  1. InputView

开发者可以根据需要自定义输入框(InputView),也可以使用 SwiftyChat 提供的基础输入框 BasicInputView

@State private var message = ""

var inputBarView: some View {
    BasicInputView(
        message: $message,
        placeholder: "输入内容",
        onCommit: { messageKind in
            self.messages.append(
                .init(user: MockMessages.sender, messageKind: messageKind, isSender: true)
            )
        }
    )
    .background(Color.primary.colorInvert())
    .embedInAnyView()
}

ChatView(messages: $messages) {
    inputBarView 
}

样式与自定义

项目提供ChatMessageCellStyle类,用于自定义消息单元格的样式。开发者可以通过初始化该类来调整特定样式,例如文本样式、边距、头像样式等。所有样式都支持默认初始化,并可以通过 environmentObject 注入。

需要更多详细信息,请参阅 Styles.mdCustomMessage.md

项目启发

SwiftyChat 的灵感来源于 UIKit 的 MessageKit 和 SwiftUI 的 Nio,它集成了许多优秀的功能,为开发者提供了更便捷的聊天界面解决方案。

欢迎社区贡献,开发者可以提交 PR 增加新功能或修复已知问题。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号