106 lines
3.3 KiB
Objective-C
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
|