// // HomeRankContentVC.m // keyBoard // // Created by Mac on 2025/11/6. // @import UIKit; #import "HomeRankContentVC.h" // 自定义卡片 Cell #import "HomeRankCardCell.h" @interface HomeRankContentVC () @property (nonatomic, strong) NSArray *dataSource; // 简单模拟数据 @end @implementation HomeRankContentVC - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = COLOR_WITH_RGB(246/255.0, 253/255.0, 249/255.0, 1.0); // 淡绿色背景 // 数据 self.dataSource = @[ @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(NO)}, @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(YES)}, @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(NO)}, @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(YES)}, @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(NO)}, @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(YES)}, @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(NO)}, @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(YES)} ]; [self.view addSubview:self.collectionView]; [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); }]; } - (UICollectionView *)collectionView{ if (!_collectionView) { UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; layout.sectionInset = UIEdgeInsetsMake(16, 16, 16, 16); layout.minimumLineSpacing = 24; layout.minimumInteritemSpacing = 16; _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; _collectionView.backgroundColor = [UIColor clearColor]; // _collectionView.alwaysBounceVertical = YES; _collectionView.bounces = false; _collectionView.dataSource = self; _collectionView.delegate = self; [_collectionView registerClass:[HomeRankCardCell class] forCellWithReuseIdentifier:@"HomeRankCardCell"]; // self.collectionView.translatesAutoresizingMaskIntoConstraints = NO; } return _collectionView; } #pragma mark - UICollectionViewDataSource - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return self.dataSource.count; } - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { HomeRankCardCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"HomeRankCardCell" forIndexPath:indexPath]; NSDictionary *d = self.dataSource[indexPath.item]; BOOL added = [d[@"added"] boolValue]; [cell configureWithTitle:d[@"title"] desc:d[@"desc"] people:d[@"people"] added:added]; __weak typeof(self) weakSelf = self; cell.onTapAction = ^{ // 切换添加/已添加状态并刷新该项 NSMutableArray *m = [weakSelf.dataSource mutableCopy]; NSMutableDictionary *md = [m[indexPath.item] mutableCopy]; BOOL cur = [md[@"added"] boolValue]; md[@"added"] = @(!cur); m[indexPath.item] = md; weakSelf.dataSource = [m copy]; [weakSelf.collectionView reloadItemsAtIndexPaths:@[indexPath]]; }; return cell; } #pragma mark - UICollectionViewDelegateFlowLayout - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { CGFloat totalHInset = 16 + 16; // section i/l/r CGFloat spacing = 16; // interitem spacing CGFloat w = collectionView.bounds.size.width - totalHInset; // not including section insets yet // Two columns → each width = (width - spacing - lr insets)/2 CGFloat cellWidth = (w - spacing) / 2.0; // 固定高度,接近示意图比例 CGFloat cellHeight = 234.0; return CGSizeMake(floor(cellWidth), cellHeight); } #pragma mark - JXCategoryListContentViewDelegate - (UIView *)listView { return self.view; } @end