This commit is contained in:
2025-11-10 19:22:31 +08:00
parent 8069b08fab
commit 1dc9560a1f
46 changed files with 691 additions and 33 deletions

View File

@@ -0,0 +1,147 @@
//
// KBMyListCell.m
// keyBoard
//
// Created by Mac on 2025/11/10.
//
#import "KBMyListCell.h"
@implementation KBMyListCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
}
return self;
}
- (void)setItemInfoDic:(NSDictionary *)itemInfoDic{
_itemInfoDic = itemInfoDic;
self.titleLabel.text = itemInfoDic[@"title"];
NSString *icon = itemInfoDic[@"icon"];
self.iconView.image = [UIImage imageNamed:icon];
}
- (void)setupUI {
[super setupUI];
self.contentView.backgroundColor = UIColor.clearColor;
self.backgroundColor = UIColor.clearColor;
[self.contentView addSubview:self.container];
[self.container addSubview:self.iconBg];
[self.iconBg addSubview:self.iconView];
[self.container addSubview:self.titleLabel];
[self.container addSubview:self.arrowView];
[self.container addSubview:self.bottomLine];
// 使 UIImageView accessoryType
[self.container mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.contentView).offset(16);
make.right.equalTo(self.contentView).offset(-16);
make.top.bottom.equalTo(self.contentView);
}];
[self.iconBg mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.container).offset(16);
make.centerY.equalTo(self.container);
make.width.height.mas_equalTo(28);
}];
[self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(self.iconBg);
make.width.height.mas_equalTo(24);
}];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.iconBg.mas_right).offset(12);
make.centerY.equalTo(self.container);
//
make.right.lessThanOrEqualTo(self.arrowView.mas_left).offset(-12);
}];
[self.arrowView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.container);
make.right.equalTo(self.container).offset(-12);
make.width.mas_equalTo(8);
make.height.mas_equalTo(14);
}];
[self.bottomLine mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.titleLabel);
make.right.equalTo(self.container).offset(-12);
make.bottom.equalTo(self.container);
make.height.mas_equalTo(KB_ONE_PIXEL);
}];
}
- (UIView *)container {
if (!_container) {
_container = [UIView new];
_container.backgroundColor = [UIColor whiteColor];
_container.layer.masksToBounds = YES; //
}
return _container;
}
- (UIView *)iconBg {
if (!_iconBg) {
_iconBg = [UIView new];
_iconBg.backgroundColor = [UIColor clearColor];
}
return _iconBg;
}
- (UIImageView *)iconView {
if (!_iconView) {
_iconView = [[UIImageView alloc] init];
}
return _iconView;
}
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [UILabel new];
_titleLabel.font = [UIFont systemFontOfSize:16];
_titleLabel.textColor = [UIColor colorWithHex:0x222222];
_titleLabel.text = @"Title";
}
return _titleLabel;
}
- (UIImageView *)arrowView {
if (!_arrowView) {
_arrowView = [[UIImageView alloc] init];
_arrowView.contentMode = UIViewContentModeScaleAspectFit;
_arrowView.tintColor = [UIColor colorWithHex:0xC0C0C0];
// iOS13+ 使
if (@available(iOS 13.0, *)) {
_arrowView.image = [UIImage systemImageNamed:@"chevron.right"];
}
}
return _arrowView;
}
- (UIView *)bottomLine {
if (!_bottomLine) {
_bottomLine = [UIView new];
_bottomLine.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1.0];
}
return _bottomLine;
}
- (void)setLineHidden:(BOOL)hidden { self.bottomLine.hidden = hidden; }
- (void)applyCornersWithFirst:(BOOL)isFirst last:(BOOL)isLast {
self.container.layer.cornerRadius = 8;
if (@available(iOS 13.0, *)) { self.container.layer.cornerCurve = kCACornerCurveContinuous; }
CACornerMask mask = 0;
if (isFirst && isLast) {
mask = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner | kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner;
} else if (isFirst) {
mask = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner;
} else if (isLast) {
mask = kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner;
} else {
mask = 0;
}
self.container.layer.maskedCorners = mask;
}
@end