好友推荐---环信发送名片(自定义视图)消息

在集成环信即时通讯的基础上,要做好友推荐的功能,查了下SDK发现里面提供了自定义消息的接口,接下来我们就可以根据自己的需要去自定义消息视图了

- (UITableViewCell *)messageViewController:(UITableView *)tableView cellForMessageModel:(id<IMessageModel>)messageModel{

环信的注释是: 获取消息自定义cell
用户根据messageModel判断是否显示自定义cell,返回nil显示默认cell,否则显示用户自定义cell

既然提供了方法,那么接下来我们就可以根据自己的需求去操作了(这里只做好友推荐的视图)

首先创建了继承EaseBaseMessageCell的自定义消息视图(有些博友问我后面不执行代理方法,在这里特此说明下,我是继承重写的,好多方法都是自己添加的,请留意你们的项目是直接修改还是继承)

.h

@interface IMChatBusinessCardCell : EaseBaseMessageCell

@end

.m

#import "IMChatBusinessCardCell.h"
#import "EaseBubbleView+IMChatBusinessCard.h"

static const CGFloat kCellHeight = 110.0f;

@implementation IMChatBusinessCardCell

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier model:(id<IMessageModel>)model{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier model:model];
    if (self) {
        self.hasRead.hidden = YES;
        self.selectionStyle = UITableViewCellSelectionStyleNone;
    }
    return self;
}

- (BOOL)isCustomBubbleView:(id)model{
    return YES;
}

- (void)setCustomModel:(id<IMessageModel>)model{
    UIImage *image = model.image;
    if (!image) {
        [self.bubbleView.imageView sd_setImageWithURL:[NSURL URLWithString:model.fileURLPath] placeholderImage:[UIImage imageNamed:model.failImageName]];
    } else {
        _bubbleView.imageView.image = image;
    }

    if (model.avatarURLPath) {
        [self.avatarView sd_setImageWithURL:[NSURL URLWithString:model.avatarURLPath] placeholderImage:model.avatarImage];
    } else {
        self.avatarView.image = model.avatarImage;
    }
}

- (void)setCustomBubbleView:(id)model{
    [_bubbleView setupBusinessCardBubbleView];

    _bubbleView.imageView.image = [UIImage imageNamed:@"shouyeliaotiankuangbai"];
}

- (void)updateCustomBubbleViewMargin:(UIEdgeInsets)bubbleMargin model:(id<IMessageModel>)mode{
    [_bubbleView updateBusinessCardMargin:bubbleMargin];
    _bubbleView.translatesAutoresizingMaskIntoConstraints = YES;

    CGFloat bubbleViewHeight = 84;// 气泡背景图高度
    CGFloat nameLabelHeight = 15;// 昵称label的高度

    if (mode.isSender) {
        _bubbleView.frame =
        CGRectMake([UIScreen mainScreen].bounds.size.width - 273.5, nameLabelHeight, 213, bubbleViewHeight);
    }else{
        _bubbleView.frame = CGRectMake(55, nameLabelHeight, 213, bubbleViewHeight);

    }
    // 这里强制调用内部私有方法
    [_bubbleView _setupConstraintsXX];

}

- (NSString *)cellIdentifierWithModel:(id<IMessageModel>)model{
    return NSStringFromClass([self class]);
}

- (CGFloat)cellHeightWithModel:(id<IMessageModel>)model{
    return kCellHeight;
}

- (void)setModel:(id<IMessageModel>)model{
    [super setModel:model];
    NSDictionary *dict = model.message.ext;
    self.bubbleView.userNameLabel.text = dict[@"cardUserName"];
    self.bubbleView.userPhoneLabel.text = dict[@"cardUserPhone"];
    _hasRead.hidden = YES;//名片消息不显示已读
}

- (void)layoutSubviews
{
    [super layoutSubviews];

    NSString *imageName = self.model.isSender ? @"RedpacketCellResource.bundle/redpacket_sender_bg" : @"RedpacketCellResource.bundle/redpacket_receiver_bg";
    UIImage *image = self
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值