SwiftUI 集成 IMKit

融云IM即时通讯
• 阅读 372

Swift UI 集成 IMKit 在 SwiftUI 中,集成 IMKit 中 RCConversationListViewController 和 RCConversationViewController 两页面可能存在以下问题: 1、直接在 View 中使用,两个页面会错位; 2、用 NavigationView 集成会话列表和会话页面,标题失效;

分析 这两个页面强依赖导航 UINavigationController,并且内部用的 frame 结算的布局。直接用放入 View 中会导致安全区域失效,导致 frame 计算错误。

struct ContentView: View { var body: some View { ChatListView() } } 在 SwiftUI 中,UIKit 的 UINavigationController 和 NavigationView 的标题兼容性不太好,在二级页面设置 navigationBar 的 title 不生效。

解决方案 开发者需要用 UIViewControllerRepresentable 将 UIKit 的页面转换一下:

struct ChatListView: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> UIViewController { let displayConversationTypeArray = [ RCConversationType.ConversationType_PRIVATE.rawValue, RCConversationType.ConversationType_GROUP.rawValue, ] let collectionConversationType = [ RCConversationType.ConversationType_SYSTEM.rawValue ] guard let conversationList = RCDChatsViewController( displayConversationTypes: displayConversationTypeArray, collectionConversationType: collectionConversationType ) else { return UIViewController() } return UINavigationController(rootViewController: conversationList); }

func updateUIViewController(_ uiViewController: UIViewController, context: Context) { } } 然后在合适的地方使用,比如 ContentView 中,注意,需要使用 ignoresSafeArea 忽略安全区域。

struct ContentView: View { var body: some View { ChatListView() .ignoresSafeArea() } } 详情查看:https://www.rongcloud.cn/?utm_source=SEO&utm_term=helloworld

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
SwiftUI从入门到实战第2章第9节:MapView
SwiftUI并没有包含MapView,这里通过遵循UIViewRepresentable协议,在SwiftUI中集成UIKit中的WKMapView。示例代码:importSwiftUIimportMapKit//首先导入需要使用到的MapKit框架。//使当前的结构体遵循UIViewReprese
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Easter79 Easter79
3年前
SwiftUI 跨组件数据传递
作者:Cyandev,iOS和MacOS开发者,目前就职于字节跳动0x00前言众所周知,SwiftUI的开发模式与React、Flutter非常相似,即都是声明式UI,由数据驱动(产生)视图,视图也会与数据自动保持同步,框架层会帮你处理“绑定”的问题。在声明式UI中不存在命令式地让一个视图变成xxx
融云IM即时通讯 融云IM即时通讯
1星期前
融云 IM 干货丨私有云客户如何获取IMKit源码并集成?
私有云客户获取并集成IMKit源码的步骤如下:获取IMKit源码1.登录获取私有云IMKit源码工程,账号密码需咨询企微群群主。修改源码中的脚本2.修改IMKit源码中的beforebuild.sh文件,注释掉所有代码。3.修改IMKit源码中的after
私有云集成 iOS IMKit 5.X 源码的解决方案
描述IMKitSDK5.0及以上版本UI相关库开放了源代码,支持在CocoaPods中以源码形式进行调试与集成。但私有云客户无法直接参照使用公有云开发文档,通过CocoPods集成IMKit源码。私有云客户如需集成IMKit源码,请使用本文中的解决方案。分
融云IM即时通讯 融云IM即时通讯
1个月前
融云IM干货丨在SwiftUI中集成IMKit,主要涉及到将UIKit页面转换为SwiftUI页面,以便在SwiftUI应用中使用IMKit提供的聊天功能。集成IMKit的基本步骤有哪些
创建项目:打开Xcode并创建一个新的Swift项目。RongCloudIM/IMKit支持Swift,确保你的项目设置为使用Swift语言。安装IMKit:你可以通过CocoaPods来安装iOS版本的IMKit(含UISDK)。在Podfile中添加以
融云IM即时通讯 融云IM即时通讯
1个月前
融云IM干货丨CocoaPods 安装后怎么确认IMKit已集成?
确认IMKit是否已通过CocoaPods集成到项目中,可以通过以下几个步骤进行验证:检查Podfile文件:确认你的Podfile文件中是否已经添加了IMKit的pod条目,类似于以下代码:rubypod'RongCloudIM/IMKit','x.y.
融云IM即时通讯 融云IM即时通讯
1星期前
融云 IM 干货丨SwiftUi 集成 IMKit 源码解决方案
关于在SwiftUI中集成IMKit的问题,需要找到一个源码解决方案。首先,需要明确IMKit是什么。IMKit是一个用于构建即时通讯界面的库,它提供了消息列表、输入视图等组件,可以简化开发过程。既然问题是关于在SwiftUI中集成IMKit,IMKit可
融云IM即时通讯
融云IM即时通讯
Lv1
北京云中融信网络科技有限公司(简称“融云”),是全球互联网通信云服务领创品牌。2014 年由创下亿级日活神话的“飞信”核心团队组建而成,依托沉淀近 20 年的领先技术基因,开创性地将通信技术封装为 SDK 提供给开发者和企业用户,大幅降低了行业对通信功能开发的难度和成本。 自成立以来,融云专注于向开发者和企业提供专业、简单、稳定的即时通讯和实时音视频 PaaS 服务。凭借产品、技术、服务等多方面优势,融云收获了超 80 万开发者和 2200+ 国家政府机关、企事业单位的青睐,支撑起 155 万+ 应用的通信需求,覆盖社交、娱乐、游戏、教育、电商、医疗等各行业场景,并打造出一系列中企出海最佳实践案例。 在全球范围内,融云构建了一张覆盖 245 个国家及地区的通信云网络,设立了多个海外数据中心以及数千加速节点,稳定互联,确保跨地域通信体验更加流畅。基于客户业务需求,融云可提供公有云、私有云、混合云等多种部署模式。 权威咨询机构“艾瑞咨询”数据报告显示,融云即时通讯云市场份额已连续多年稳居第一。
文章
208
粉丝
0
获赞
0