网易云信iOSSDK集成遇到的坑

在接手较晚的项目中,修复网易云信iOS SDK集成时遇到的问题,特别是当发送语音消息时,由于tableView状态导致的cell显示异常。问题在于SDK中的代码错误地获取了屏幕宽度,修正方法是直接获取当前屏幕宽度进行计算,避免了cell过度拉伸横跨整个屏幕的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接手项目较晚 没有亲手集成 bug修起来很难受

你知道它有问题 你也知道是哪块儿除了问题 可就是没法找到问题代码在哪 纠结的一上午 下面我就介绍一下这个bug

问题出在这套SDK中控制message内容显示范围的代码

- (void)layoutConfig:(NIMMessageModel *)model{

    model.sessionConfig = self.sessionConfig;
    model.layoutConfig = [self layoutConfigForModel:model];
    [model calculateContent:self.tableView.frame.size.width force:NO];
}

问题出在这段代码中的这一句

[model calculateContent:self.tableView.frame.size.width force:NO]
当你第一次发送语音消息时 当前界面的tableView已经被加载显示出来了 在这里拿到的就是正常的375
而当你第二次进入当前界面 在tableView中的返回行高的代理方法中会调用这个方法 而这时 tableView还未加载出来

所有此时拿到的宽度是600 是StoryBoard中的宽度 因为所有宽度的计算基数是当前显示界面的宽度 因为拿到的宽度是正确宽度的1.6倍 会导致后续计算结果全部扩张 从而导致语音cell显示过长 横跨整个屏幕

所有此次应当进行修改 修改为

- (void)layoutConfig:(NIMMessageModel *)model{

    model.sessionConfig = self.sessionConfig;
    model.layoutConfig = [self layoutConfigForModel:model];
    [model calculateContent:[UIScreen mainScreen].bounds.size.width force:NO];
}

这里直接获取当前屏幕宽度 进行后续计算 不会对结果造成影响 又巧妙地避开了这个bug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值