// // WLStakeRecordAlert.m // romantic // // Created by Xmac on 2024/4/22. // Copyright © 2024 romantic. All rights reserved. // #import "WLStakeRecordAlert.h" #import "WLStakeRecordCell.h" #import "WLStakeRecordModel.h" @interface WLStakeRecordAlert () @property (nonatomic, strong) UIView *mainView; @property (nonatomic, strong) UICollectionView *collectionView; @property (nonatomic, strong) NSMutableArray *models; //礼物数组 //关于网络请求 @property (nonatomic, assign) BOOL isLoadFirst; @property (nonatomic, assign) BOOL isOnRequesting, isNoMoreData, isNetError; @property (nonatomic, strong) XiamuFooter *footerView; @property (nonatomic, strong) XiamuTipView *tipsView; @property (nonatomic, assign) NSInteger pageIndex; @property (nonatomic, assign) CGFloat mainW; @property (nonatomic, assign) CGFloat mainH; @property (nonatomic, assign) CGFloat contentX; @property (nonatomic, assign) CGFloat contentTop; @property (nonatomic, assign) CGFloat contentBottom; @property (nonatomic, copy) NSString *bgImgName; @end @implementation WLStakeRecordAlert #pragma mark - set - (NSMutableArray *)models { if (!_models) { _models = NSMutableArray.array; } return _models; } - (XiamuFooter *)footerView { if (!_footerView) { _footerView = [[XiamuFooter alloc] initWithFrame:CGRectMake(0, 0, _collectionView.width, 40)]; } return _footerView; } #pragma mark - - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:UIScreen.mainScreen.bounds]) { self.backgroundColor = [kBlackColor colorWithAlphaComponent:0.3]; [ControlCreator createButton:self rect:self.bounds text:@"" font:nil color:nil backguoundColor:UIColor.clearColor imageName:nil target:self action:@selector(backAction:)]; } return self; } - (void)initMainView { if (_mainView) { return; } UIColor *color; color = HEXCOLOR(0xFFFFFF); _mainView = [[UIView alloc] initWithFrame:CGRectMake((APPW-_mainW)/2, APPH-_mainH, _mainW, _mainH)]; // _mainView = [[UIView alloc] initWithFrame:CGRectMake((APPW-_mainW)/2, (APPH-_mainH)/2, _mainW, _mainH)]; _mainView.backgroundColor = UIColor.clearColor; [self addSubview:_mainView]; [ControlCreator createImageView:_mainView rect:_mainView.bounds imageName:self.bgImgName backguoundColor:nil]; // UIImageView *closeImgV = [ControlCreator createImageView:nil rect:CGRectMake((APPW-30)/2, _mainView.bottom+15, 30, 30) imageName:@"bj_box_close" backguoundColor:nil]; // [self addSubview:closeImgV]; [ControlCreator createButton:_mainView rect:CGRectMake(_mainW-80, 0, 80, 40) text:nil font:nil color:nil backguoundColor:nil imageName:nil target:self action:@selector(backAction:)]; } - (void)initCollecionView { if (_collectionView) { return; } UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; layout.itemSize = CGSizeMake((_mainView.width-_contentX*2), 52); layout.minimumInteritemSpacing = 0; layout.minimumLineSpacing = 5; layout.sectionInset = UIEdgeInsetsMake(0, 14, 20, 14); _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, _contentTop, _mainView.width, _mainView.height-_contentTop-_contentBottom) collectionViewLayout:layout]; _collectionView.delegate = self; _collectionView.dataSource = self; _collectionView.backgroundColor = UIColor.clearColor; _collectionView.showsVerticalScrollIndicator = NO; NSString *cellId = NSStringFromClass(WLStakeRecordCell.class); [_collectionView registerNib:[UINib nibWithNibName:cellId bundle:nil] forCellWithReuseIdentifier:cellId]; [_collectionView registerClass:UICollectionReusableView.class forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"foot"]; [_mainView addSubview:_collectionView]; } - (void)initMJrefresh { __weak typeof(self) weakSelf = self; MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ [weakSelf loadFirst]; }]; _collectionView.mj_header = header; } - (void)initTipView { if (_tipsView) { return; } _tipsView = [[XiamuTipView alloc]initWithFrame:CGRectMake(0, 0, _collectionView.width, 250)]; [self.collectionView addSubview:_tipsView]; __weak typeof(self) weakSelf = self; _tipsView.block = ^{ if (weakSelf.isNetError) { [weakSelf loadFirst]; } }; } #pragma mark - - (void)showOnView:(UIView *)parent { CGFloat x = 0; CGFloat w = ScreenWidth - x*2; CGFloat h = w/375*580; self.mainW = w; self.mainH = h; self.contentX = 30; self.contentTop = 115; self.contentBottom = 50; self.bgImgName = @"stake_bg_record"; [self initMainView]; [self initCollecionView]; [self initMJrefresh]; // [self initTipView]; [parent addSubview:self]; [parent addSubview:self]; [_collectionView.mj_header beginRefreshing]; } #pragma mark - action - (IBAction)backAction:(id)sender { [self removeFromSuperview]; } #pragma mark - data - (void)setIsOnRequesting:(BOOL)isOnRequesting { _isOnRequesting = isOnRequesting; if (isOnRequesting) { _isNetError = NO; [self.footerView stateLoading]; return; } if (_isNoMoreData) { [self.footerView stateNoMore]; if (self.models.count==0) { [self.tipsView stateNoResult]; [self.footerView stateHide]; } } if (_isNetError) { [self.footerView stateNetError]; if (_isLoadFirst) { [self.tipsView stateNoNet]; [self.footerView stateHide]; [self.models removeAllObjects]; [_collectionView reloadData]; } } } - (void)loadFirst { if (_isOnRequesting) { return; } _pageIndex = 1; _isLoadFirst = YES; self.isNoMoreData = NO; [self loadListData]; } - (void)loadMore { if (_isOnRequesting) { return; } if (_isNoMoreData) { return; } _isLoadFirst = NO; [self loadListData]; } - (void)loadListData { [self.tipsView stateHide]; self.isNetError = NO; __weak typeof(self) weakSelf = self; self.isOnRequesting = YES; NSDictionary *dict = @{@"page":@(self.pageIndex).stringValue, @"page_limit":@"30", }; NSMutableDictionary *paras = [NSMutableDictionary dictionary]; [paras addEntriesFromDictionary:dict]; NSString *urlStr = @"/api/monster/get_monster_log"; // [SVProgressHUD showWithStatus:nil]; [RCMicHTTP postWithURLString:urlStr parameters:paras response:^(RCMicHTTPResult *result) { [SVProgressHUD dismiss]; if (result.success) { if (result.errorCode == 200 && [result.content isKindOfClass:NSArray.class]) { [self checkRequestResult:result.content]; }else { [SVProgressHUD showInfoWithStatus:result.message]; self.isNetError = YES; } }else { [SVProgressHUD showInfoWithStatus:@"网络错误"]; self.isNetError = YES; } weakSelf.isOnRequesting = NO; [weakSelf.collectionView.mj_header endRefreshing]; }]; } - (void)checkRequestResult:(NSArray *)listArr { if ([listArr isKindOfClass:NSArray.class]) { if (_isLoadFirst) { [self.models removeAllObjects]; } if (listArr.count == 0 ) { self.isNoMoreData = YES; } NSArray *models = [WLStakeRecordModel mj_objectArrayWithKeyValuesArray:listArr]; [self.models addObjectsFromArray:models]; [_collectionView reloadData]; _pageIndex ++; } } #pragma mark ====================== 代理方法 ====================== - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section { return CGSizeMake(APPW, 40); } - (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { if ([kind isEqualToString:UICollectionElementKindSectionFooter]) { UICollectionReusableView *foot = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"foot" forIndexPath:indexPath]; NSInteger footTag = 1001; UIView *subview = [foot viewWithTag:footTag]; if (subview) { [subview removeFromSuperview]; } self.footerView.tag = footTag; [foot addSubview:self.footerView]; return foot; } return nil; } - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { return 1; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return self.models.count; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { NSString *cellId = NSStringFromClass(WLStakeRecordCell.class); WLStakeRecordCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath]; WLStakeRecordModel *model = self.models[indexPath.item]; cell.model = model; return cell; } - (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.item+6>self.models.count && !self.isNoMoreData) { [self loadMore]; } } @end