SwiftUI 集成 IMKit

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

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

SwiftUI从入门到实战第2章第9节:MapView

SwiftUI并没有包含MapView,这里通过遵循UIViewRepresentable协议,在SwiftUI中集成UIKit中的WKMapView。示例代码:importSwiftUIimportMapKit//首先导入需要使用到的MapKit框架。//使当前的结构体遵循UIViewReprese

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  

SwiftUI 跨组件数据传递

作者:Cyandev,iOS和MacOS开发者,目前就职于字节跳动0x00前言众所周知,SwiftUI的开发模式与React、Flutter非常相似,即都是声明式UI,由数据驱动(产生)视图,视图也会与数据自动保持同步,框架层会帮你处理“绑定”的问题。在声明式UI中不存在命令式地让一个视图变成xxx

融云IM干货丨在SwiftUI中集成IMKit,主要涉及到将UIKit页面转换为SwiftUI页面,以便在SwiftUI应用中使用IMKit提供的聊天功能。集成IMKit的基本步骤有哪些

创建项目:打开Xcode并创建一个新的Swift项目。RongCloudIM/IMKit支持Swift,确保你的项目设置为使用Swift语言。安装IMKit:你可以通过CocoaPods来安装iOS版本的IMKit(含UISDK)。在Podfile中添加以