112 lines
4.6 KiB
Objective-C
112 lines
4.6 KiB
Objective-C
//
|
|
// 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<NSDictionary *> *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];
|
|
KBWeakSelf
|
|
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
|