Files
yinmeng-ios/xplan-ios/Main/Room/View/MessageContainerView/XPRoomMessageContainerView.m
2021-10-26 19:10:03 +08:00

106 lines
3.3 KiB
Objective-C

//
// XPRoomMessageView.m
// xplan-ios
//
// Created by 冯硕 on 2021/10/11.
//
#import "XPRoomMessageContainerView.h"
///Third
#import <Masonry/Masonry.h>
#import <NIMSDK/NIMSDK.h>
///Model
#import "XPRoomMessageDisplayModel.h"
///View
#import "XPRoomMessageTableViewCell.h"
#import "XPRoomMessageHeaderView.h"
#import "View/XPRoomMessageHeaderView.h"
@interface XPRoomMessageContainerView ()<UITableViewDelegate, UITableViewDataSource>
///列表
@property (nonatomic,strong) UITableView *messageTableView;
///数据源
@property (nonatomic,strong) NSMutableArray<XPRoomMessageDisplayModel *> *datasource;
///临时存放消息的数组
@property (nonatomic,strong) NSMutableArray<XPRoomMessageDisplayModel *> *tempArray;
///头部
@property (nonatomic,strong) XPRoomMessageHeaderView *headerView;
@end
@implementation XPRoomMessageContainerView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
///添加信息
- (void)addRoomMessage:(NIMMessage *)message {
XPRoomMessageDisplayModel * model = [[XPRoomMessageDisplayModel alloc] initDisplayModel:message];
[self.tempArray addObject:message];
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.messageTableView];
self.messageTableView.tableHeaderView = self.headerView;
}
- (void)initSubViewConstraints {
[self.messageTableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self).offset(15);
make.top.bottom.right.mas_equalTo(self);
}];
}
#pragma mark - UITableViewDelegate And UITableViewDataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.datasource.count;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
XPRoomMessageDisplayModel * model = [self.datasource objectAtIndex:indexPath.row];
return model.cellHeight;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
XPRoomMessageTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomMessageTableViewCell class])];
if (cell == nil) {
cell = [[XPRoomMessageTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomMessageTableViewCell class])];
}
return cell;
}
#pragma mark - Getters And Setters
- (UITableView *)messageTableView {
if (!_messageTableView) {
_messageTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
_messageTableView.delegate = self;
_messageTableView.dataSource = self;
_messageTableView.tableFooterView = [UIView new];
_messageTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_messageTableView.backgroundColor = [UIColor clearColor];
if (@available(iOS 11.0, *)) {
_messageTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
[_messageTableView registerClass:[XPRoomMessageTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomMessageTableViewCell class])];
}
return _messageTableView;
}
- (XPRoomMessageHeaderView *)headerView {
if (!_headerView) {
_headerView = [[XPRoomMessageHeaderView alloc] init];
}
return _headerView;
}
@end