Files
keyboard/keyBoard/Class/Me/VC/MyVC.m
2025-11-19 21:58:54 +08:00

114 lines
4.9 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// MyVC.m
// keyBoard
//
// Created by Mac on 2025/10/29.
//
#import "MyVC.h"
#import "MySkinVC.h"
#import "KBSkinDetailVC.h"
#import "KBMyHeaderView.h" // 顶部视图独立封装
#import "KBMyListCell.h"
#import "KBTestVC.h"
@interface MyVC () <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) BaseTableView *tableView; // 列表
@property (nonatomic, strong) KBMyHeaderView *header; // 顶部视图
@property (nonatomic, strong) NSArray<NSArray<NSDictionary *> *> *data; // 分组数据
@property (nonatomic, strong) UIImageView *bgImageView; // 全屏背景图
@end
@implementation MyVC
- (void)viewDidLoad {
[super viewDidLoad];
// 背景图
self.view.backgroundColor = UIColor.clearColor;
self.kb_navView.hidden = true;
self.bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"my_bg_icon"]];
self.bgImageView.contentMode = UIViewContentModeScaleAspectFill;
[self.view addSubview:self.bgImageView];
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
}];
// 数据源title + SF Symbols 名称 + 色值),分两组
self.data = @[
@[@{ @"title": KBLocalized(@"Notice"), @"icon": @"my_notice_icon", @"color": @(0x60A3FF) }],
@[@{ @"title": KBLocalized(@"Share App"), @"icon": @"my_share_icon", @"color": @(0xF5A623) }],
@[@{ @"title": KBLocalized(@"Feedback"), @"icon": @"my_feedback_icon", @"color": @(0xB06AFD) },
@{ @"title": KBLocalized(@"E-mail"), @"icon": @"my_email_icon", @"color": @(0xFF8A65) },
@{ @"title": KBLocalized(@"Agreement"), @"icon": @"my_agreement_icon", @"color": @(0x4CD964) },
@{ @"title": KBLocalized(@"Privacy Policy"), @"icon": @"my_privacy_icon", @"color": @(0x5AC8FA) }]
];
[self.view addSubview:self.tableView];
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
}];
// tableHeaderView 需要设置 frame约束不会自动生效
self.header = [[KBMyHeaderView alloc] initWithFrame:CGRectMake(0, 0, KB_SCREEN_WIDTH, 357)];
self.header.backgroundColor = UIColor.clearColor; // 透明,显示背景图
self.tableView.tableHeaderView = self.header;
}
// 系统导航栏的显隐由 BaseViewController 统一处理(始终隐藏),此处无需再设置。
#pragma mark - UITableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return self.data.count; }
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.data[section].count; }
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return CGFLOAT_MIN; }
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *v = [UIView new]; v.backgroundColor = [UIColor clearColor]; return v;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 20; }
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *v = [UIView new]; v.backgroundColor = UIColor.clearColor; return v; }
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 64; }
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
KBMyListCell *cell = [tableView dequeueReusableCellWithIdentifier:[KBMyListCell reuseId]];
if (!cell) { cell = [[KBMyListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[KBMyListCell reuseId]]; }
NSDictionary *info = self.data[indexPath.section][indexPath.row];
cell.itemInfoDic = info;
// 卡片圆角(每个 section 四周 8 的圆角)
NSInteger rows = [tableView numberOfRowsInSection:indexPath.section];
BOOL isFirst = indexPath.row == 0;
BOOL isLast = indexPath.row == rows - 1;
[cell applyCornersWithFirst:isFirst last:isLast];
// 分割线:仅上面一组显示中间线;下面一组完全不显示
BOOL showLine = (indexPath.section == 0) && !isLast;
[cell setLineHidden:!showLine];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// KBTestVC *vc = [[KBTestVC alloc] init];
// [self.navigationController pushViewController:vc animated:true];
}
#pragma mark - Lazy
- (BaseTableView *)tableView {
if (!_tableView) {
_tableView = [[BaseTableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
_tableView.backgroundColor = UIColor.clearColor; // 透明
_tableView.opaque = NO;
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // 关闭系统分割线
}
return _tableView;
}
@end