// // HomeHotVC.m // keyBoard // // Created by Mac on 2025/11/6. // #import "HomeHotVC.h" // 视图 #import "KBTopThreeView.h" #import "HomeHotCell.h" #import "HomeRankVC.h" #import "KBSearchVC.h" #import "HomeRankDetailPopView.h" #import "LSTPopView.h" #import @interface HomeHotVC () // 顶部前三名视图 @property (nonatomic, strong) KBTopThreeView *topThreeView; @property (nonatomic, strong) NSArray *dataSource; // 简单模拟数据 @end @interface HomeHotVC () @end @implementation HomeHotVC - (void)viewDidLoad { [super viewDidLoad]; // 构建数据(演示) self.dataSource = @[ @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO} ]; // 搭建 UI [self.view addSubview:self.tableView]; [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); }]; // 顶部前三名作为 tableHeaderView(注意:tableHeaderView 需设定明确高度) CGFloat headerH = 280.0; self.topThreeView = [[KBTopThreeView alloc] initWithFrame:CGRectMake(0, 0, KB_SCREEN_WIDTH, headerH)]; // 示例配置:三个条目的标题 [self.topThreeView configWithItems:@[ @{@"title":@"High EQ", @"rank":@1}, @{@"title":@"Flirt Girls", @"rank":@2}, @{@"title":@"Humorous", @"rank":@3} ]]; self.tableView.tableHeaderView = self.topThreeView; } #pragma mark - UITableViewDataSource - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataSource.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { HomeHotCell *cell = [tableView dequeueReusableCellWithIdentifier:HomeHotCell.reuseId forIndexPath:indexPath]; NSDictionary *item = self.dataSource[indexPath.row]; // 配置 cell [cell configWithRank:[item[@"rank"] integerValue] title:item[@"title"] subtitle:item[@"sub"] joined:[item[@"joined"] boolValue]]; return cell; } #pragma mark - UITableViewDelegate - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 84.0; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; // KBSearchVC *vc = [[KBSearchVC alloc] init]; // [self.navigationController pushViewController:vc animated:true]; // UINavigationController *nav = KB_CURRENT_NAV; // [nav pushViewController:vc animated:true]; NSLog(@"==="); // 点击卡片 -> 展示弹窗 NSDictionary *d = self.dataSource[indexPath.item]; // 自定义内容视图(尺寸可按需调节) CGFloat width = MIN(KB_SCREEN_WIDTH - 76, 420); HomeRankDetailPopView *content = [[HomeRankDetailPopView alloc] initWithFrame:CGRectMake(0, 0, width, 460)]; NSString *title = d[@"title"] ?: @"High EQ"; NSString *people = d[@"people"] ?: @"Download: 1 Million"; NSString *desc = @"Be Neither Too Close\nNor Too Distant"; // 示例文案 [content configWithAvatar:nil title:title download:people desc:desc]; // 创建并弹出 LSTPopView *pop = [LSTPopView initWithCustomView:content parentView:nil popStyle:LSTPopStyleScale dismissStyle:LSTDismissStyleScale]; pop.hemStyle = LSTHemStyleCenter; // 居中 pop.bgColor = [[UIColor blackColor] colorWithAlphaComponent:0.4]; pop.isClickBgDismiss = YES; // 点击背景关闭 pop.cornerRadius = 0; // 自定义 view 自处理圆角 __weak typeof(pop) weakPop = pop; content.saveHandler = ^{ [weakPop dismiss]; }; content.closeHandler = ^{ [weakPop dismiss]; }; [pop pop]; } #pragma mark - Lazy - (BaseTableView *)tableView { if (!_tableView) { // 使用 BaseTableView,统一默认配置 _tableView = [[BaseTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; _tableView.dataSource = self; _tableView.delegate = self; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // 设计为卡片式,去掉系统分割线 _tableView.showsVerticalScrollIndicator = NO; _tableView.contentInset = UIEdgeInsetsMake(8, 0, KB_SafeAreaBottom(), 0); [_tableView registerClass:HomeHotCell.class forCellReuseIdentifier:HomeHotCell.reuseId]; } return _tableView; } @end