| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- //
- // MOMemberTableView.m
- // MiMoLive
- //
- // Created by SuperC on 2023/11/19.
- //
- #import "MOMemberTableView.h"
- #import "MOMemberNoData.h"
- #import "UIImage+YYAdd.h"
- #import "UILabel+MOBezierAnimation.h"
- @interface MOMemberTableView ()<UITableViewDelegate,UITableViewDataSource>
- @end
- @implementation MOMemberTableView
- - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style
- {
- self = [super initWithFrame:frame style:style];
- if (self)
- {
- self.delegate = self;
- self.dataSource = self;
- //iOS15适配
- if (@available(iOS 15.0, *))
- {
- self.sectionHeaderTopPadding = 0;
- }
- [self registerNib:[UINib nibWithNibName:@"MOMemberNoData" bundle:nil] forCellReuseIdentifier:MOMemberNoData_ID];
- [self registerClass:[MOMemberListCell class] forCellReuseIdentifier:MOMemberListCell_ID];
- }
- return self;
- }
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- {
- return 1;
- }
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- {
- if(self.dataArr.count == 0){
- return 1;
- }
- return self.dataArr.count;
- }
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
-
- if(self.dataArr.count == 0){
- WEAKSELF
- MOMemberNoData *cell = [tableView dequeueReusableCellWithIdentifier:MOMemberNoData_ID];
- cell.inviteBlock = ^{
- weakSelf.inviteBlock ? weakSelf.inviteBlock() : nil;
- };
- return cell;
- }
- else{
- MOUserBase *model = self.dataArr[indexPath.row];
- MOMemberListCell *cell = [tableView dequeueReusableCellWithIdentifier:MOMemberListCell_ID];
- if (cell == nil){
- cell = [[MOMemberListCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MOMemberListCell_ID];
- }
- cell.cellIndexPath = indexPath;
- cell.model = model;
- return cell;
- }
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- if(self.dataArr.count == 0)
- {
- return [MOMemberNoData theCellHeight];
- }
- return 63.0;
- }
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- {
- [tableView deselectRowAtIndexPath:indexPath animated:YES];
-
- if(self.dataArr.count > 0){
- MOUserBase *model = self.dataArr[indexPath.row];
- self.cellClickBlock ? self.cellClickBlock(model) : nil;
- }
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
-
- if(self.listType == MOMemberListTypeAudience){
- return 36.0;
- }
- else{
- return 0.01;
- }
- }
- - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
-
- return 0.01;
- }
- - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
- UIView *view = [[UIView alloc] init];
- view.backgroundColor = [UIColor clearColor];
-
- if(self.listType == MOMemberListTypeAudience){
- view.hidden = NO;
- }
- else{
- view.hidden = YES;
- }
-
- //容器View
- UIView *bgView = [[UIView alloc] init];
- [view addSubview:bgView];
- [bgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.bottom.equalTo(view);
- make.left.equalTo(view).offset(12.0);
- make.right.equalTo(view).offset(-12.0);
- }];
- bgView.layer.cornerRadius = 12.0;
- bgView.layer.masksToBounds = YES;
-
- //背景图
- UIImageView *bgImgView = [[UIImageView alloc] init];
- [bgView addSubview:bgImgView];
- [bgImgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.edges.equalTo(bgView);
- }];
- NSArray *colorArr = @[[MOTools colorWithHexString:@"#EFF5FF" alpha:1.0],[MOTools colorWithHexString:@"#EEF0FF" alpha:1.0]];
- UIImage *image = [MOTools createGradientRectImageWithBounds:CGRectMake(0, 0, (SCREENWIDTH - 14.0 * 2), 36.0) Colors:colorArr GradientType:0];
- [bgImgView setImage:image];
- bgImgView.contentMode = UIViewContentModeScaleToFill;
-
- UIView *whiteView = [[UIView alloc] init];
- whiteView.backgroundColor = [UIColor whiteColor];
- [bgView addSubview:whiteView];
- [whiteView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(bgView).offset(1.0);
- make.bottom.equalTo(bgView).offset(-1.0);
- make.left.equalTo(bgView).offset(1.0);
- make.right.equalTo(bgView).offset(-1.0);
- }];
- whiteView.layer.cornerRadius = 31.0 / 2.0;
- whiteView.layer.masksToBounds = YES;
- whiteView.hidden = YES;
-
-
- UILabel *titleLab = [[UILabel alloc] initWithFrame:CGRectMake(21.0, 0.0, 140.0, 18.0)];
- titleLab.font = [MOTextTools regularFont:13.0];
- titleLab.textColor = kBaseTextColor_1;
- titleLab.textAlignment = NSTextAlignmentLeft;
- titleLab.text = @"Advanced fan group:";
- [bgView addSubview:titleLab];
- [titleLab mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(bgView).offset(20.0);
- make.centerY.equalTo(bgView.mas_centerY);
- }];
-
- UIImageView *rightImgView = [[UIImageView alloc] init];
-
- [rightImgView setImage:[UIImage imageNamed:@"v_2_right_24"]];
-
- [bgView addSubview:rightImgView];
- [rightImgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.equalTo(bgView).offset(-12.0);
- make.height.equalTo(@12.0);
- make.width.equalTo(@12.0);
- make.centerY.equalTo(bgView.mas_centerY);
- }];
-
- UILabel *numLab = [[UILabel alloc] init];
- numLab.font = [MOTextTools poppinsMediumFont:13.0];
- numLab.textColor = [MOTools colorWithHexString:@"#4363FF" alpha:1.0];
- numLab.textAlignment = NSTextAlignmentRight;
- numLab.text = [NSString stringWithFormat:@"%.f",self.theVipNum];
- [bgView addSubview:numLab];
- [numLab mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.equalTo(rightImgView.mas_left).offset(-10.0);
- make.height.equalTo(@18.0);
- make.width.greaterThanOrEqualTo(@20.0);
- make.centerY.equalTo(bgView.mas_centerY);
- }];
- //
- // UIImageView *headImgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon_mine_placeHolder"]];
- // [bgView addSubview:headImgView];
- // [headImgView mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.right.equalTo(numLab.mas_left).offset(-10.0);
- // make.width.height.equalTo(@30.0);
- // make.centerY.equalTo(bgView.mas_centerY);
- // }];
-
- BigBtn *bigBtn = [BigBtn buttonWithType:UIButtonTypeCustom];
- [bgView addSubview:bigBtn];
- [bigBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.edges.equalTo(bgView);
- }];
- [bigBtn addTarget:self action:@selector(headViewBtnClick) forControlEvents:UIControlEventTouchUpInside];
-
- return view;
- }
- - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
- UIView *view = [[UIView alloc] init];
- view.backgroundColor = [UIColor clearColor];
- return view;
- }
- - (void)toAddUserListDataWith:(NSArray *)userListArr{
- NSMutableArray *elementsToAdd = [NSMutableArray array];
-
- for (MOUserBase *userModel in userListArr) {
- BOOL isElementFound = NO;
-
- // 检查数组A中是否存在相同元素
- for (NSInteger i = 0; i < self.dataArr.count; i++) {
- MOUserBase *elementA = self.dataArr[i];
-
- if([elementA.userProfile.id isEqualToString:userModel.userProfile.id]){
- [self.dataArr replaceObjectAtIndex:i withObject:userModel];
- isElementFound = YES;
- break;
- }
- }
-
- // 未找到则记录待添加
- if (!isElementFound) {
- [elementsToAdd addObject:userModel];
- }
- }
-
- // 将B中独有的元素添加到A
- [self.dataArr addObjectsFromArray:elementsToAdd];
- }
- - (void)headViewBtnClick{
- self.headBtnClickBlock ? self.headBtnClickBlock() : nil;
- }
- - (NSMutableArray *)dataArr{
- if(!_dataArr){
- _dataArr = [NSMutableArray array];
- }
- return _dataArr;
- }
- @end
|