From 43e8b856562651df1cb166cd8792e69102dafc5e Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Wed, 3 Dec 2025 19:38:55 +0800 Subject: [PATCH] 1 --- .../placeholder_icon.imageset/Contents.json | 22 +++++++ .../placeholder_icon.imageset/切图 223@2x.png | Bin 0 -> 11442 bytes .../placeholder_icon.imageset/切图 223@3x.png | Bin 0 -> 20672 bytes keyBoard/Class/Home/V/HomeHotCell.m | 14 +---- keyBoard/Class/Home/V/HomeRankCardCell.h | 8 +-- keyBoard/Class/Home/V/HomeRankCardCell.m | 59 +++++++----------- keyBoard/KeyBoardPrefixHeader.pch | 2 + 7 files changed, 49 insertions(+), 56 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Ohter/placeholder_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Ohter/placeholder_icon.imageset/切图 223@2x.png create mode 100644 keyBoard/Assets.xcassets/Ohter/placeholder_icon.imageset/切图 223@3x.png diff --git a/keyBoard/Assets.xcassets/Ohter/placeholder_icon.imageset/Contents.json b/keyBoard/Assets.xcassets/Ohter/placeholder_icon.imageset/Contents.json new file mode 100644 index 0000000..278535e --- /dev/null +++ b/keyBoard/Assets.xcassets/Ohter/placeholder_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "切图 223@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "切图 223@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Ohter/placeholder_icon.imageset/切图 223@2x.png b/keyBoard/Assets.xcassets/Ohter/placeholder_icon.imageset/切图 223@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..55939d935aaba726e4d4aeb589cea83cdac7a2d8 GIT binary patch literal 11442 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 mMYnl(=v(FU z?wL>1q=Z~Wze&W;H7VNNq%`0FG%3w@m8-$P4%z|v9}~Smx0$AW zrTmwOc&qxe@|mhN_B}MoH))4%&=I;qXXuXU)mKZWFB5TKaKC&%tvuw{6 zRrk5&(jdAh`Zo~^*f%R9CvlmoaWIb0d%j(9^R!jW!aa5V8P)r)B6NXHZbnBUbk&$| zI7vQteKgTlqhAy;pQZG)>kL zyHI@Ef^RZWhd-D6zbv9|)RBXM4^!P=Dq>oNF3<^6FeP(0EgEnDnwFLtBBur-!1QVP zZxj8PlHXIr)a?QCA0=Xuo3*81Qg>l7G{#*#3C>-?53;>b{*y#}+TuIq z-(B_jCehZyQ{=bTNw=EF|^tvr7rYV%EtpET3IY~r8RDkI|K8wJ7 zSNpxn%Xuew^2@Z8L0Mm}ctDacvLF+(JzKKAPQ<4z{zd*_rJGvkf)Ccf{{jF2|NlrR jkum@P00v1!K~w_(sER>0^v5p`00000NkvXXu0mjfNV1G; literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Home/V/HomeHotCell.m b/keyBoard/Class/Home/V/HomeHotCell.m index dd4be1e..6300c95 100644 --- a/keyBoard/Class/Home/V/HomeHotCell.m +++ b/keyBoard/Class/Home/V/HomeHotCell.m @@ -79,19 +79,7 @@ self.titleLabel.text = character.characterName ?: @""; self.subLabel.text = character.download ?: @""; - // 头像:圆形占位 + 网络图 - UIImage *placeholder = nil; - if (!placeholder) { - // 使用纯色圆形作为占位 - CGFloat side = 56.0; - UIGraphicsBeginImageContextWithOptions(CGSizeMake(side, side), NO, 0); - CGContextRef ctx = UIGraphicsGetCurrentContext(); - [[UIColor colorWithWhite:0.9 alpha:1.0] setFill]; - CGContextFillEllipseInRect(ctx, CGRectMake(0, 0, side, side)); - placeholder = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - } - [self.avatarView kb_setAvatarURL:character.avatarUrl placeholder:placeholder]; + [self.avatarView kb_setAvatarURL:character.avatarUrl placeholder:KBPlaceholderImage]; // 加入状态 BOOL joined = character.added; diff --git a/keyBoard/Class/Home/V/HomeRankCardCell.h b/keyBoard/Class/Home/V/HomeRankCardCell.h index bf523e3..ebc1670 100644 --- a/keyBoard/Class/Home/V/HomeRankCardCell.h +++ b/keyBoard/Class/Home/V/HomeRankCardCell.h @@ -13,18 +13,12 @@ NS_ASSUME_NONNULL_BEGIN /// 首页排行榜卡片 Cell(两列) @interface HomeRankCardCell : UICollectionViewCell -/// 当前展示的角色模型 +/// 当前展示的角色模型(设置后,cell 会在 setter 中根据模型刷新 UI) @property (nonatomic, strong, nullable) KBCharacter *character; /// 点击加号/勾选按钮回调 @property (nonatomic, copy, nullable) void (^onTapAction)(void); -/// 旧的配置方法(兼容用,不推荐继续使用) -- (void)configureWithTitle:(NSString *)title - desc:(NSString *)desc - people:(NSString *)people - added:(BOOL)added; - @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/V/HomeRankCardCell.m b/keyBoard/Class/Home/V/HomeRankCardCell.m index 08b14b8..4cc3ff1 100644 --- a/keyBoard/Class/Home/V/HomeRankCardCell.m +++ b/keyBoard/Class/Home/V/HomeRankCardCell.m @@ -8,11 +8,12 @@ @import UIKit; #import "HomeRankCardCell.h" #import "UIView+KBShadow.h" +#import "UIImageView+KBWebImage.h" @interface HomeRankCardCell () @property (nonatomic, strong) UIView *shadowView; // 阴影容器(不裁剪) -@property (nonatomic, strong) UIImageView *cardView; // 卡片背景图片 -@property (nonatomic, strong) UIView *badgeCircle; // 顶部圆形描边 +@property (nonatomic, strong) UIView *cardView; // 卡片背景图片 +@property (nonatomic, strong) UIImageView *averImageView; // 顶部圆形描边 @property (nonatomic, strong) UILabel *titleLabel; @property (nonatomic, strong) UILabel *descLabel; @property (nonatomic, strong) UILabel *peopleLabel; @@ -35,7 +36,7 @@ // 使用懒加载属性,保证首次访问时创建 [self.contentView addSubview:self.shadowView]; [self.shadowView addSubview:self.cardView]; - [self.contentView addSubview:self.badgeCircle]; + [self.contentView addSubview:self.averImageView]; [self.cardView addSubview:self.titleLabel]; [self.cardView addSubview:self.descLabel]; [self.cardView addSubview:self.peopleLabel]; @@ -56,14 +57,14 @@ make.edges.equalTo(self.shadowView).insets(UIEdgeInsetsMake(0, 8, 0, 8)); }]; - [self.badgeCircle mas_makeConstraints:^(MASConstraintMaker *make) { + [self.averImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.cardView); make.centerY.equalTo(self.shadowView.mas_top); make.width.height.mas_equalTo(68); }]; [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.badgeCircle.mas_bottom).offset(13); + make.top.equalTo(self.averImageView.mas_bottom).offset(13); make.left.equalTo(self.cardView.mas_left).offset(18); make.right.equalTo(self.cardView.mas_right).offset(-18); make.height.mas_equalTo(23); @@ -94,7 +95,7 @@ // 阴影路径需在尺寸确定后更新(封装方法会基于记录参数自动计算) [self.shadowView kb_updateShadowPath]; - _badgeCircle.layer.cornerRadius = 34; + self.averImageView.layer.cornerRadius = 34; } - (void)prepareForReuse { @@ -106,12 +107,14 @@ if (self.onTapAction) self.onTapAction(); } -- (void)configureWithTitle:(NSString *)title desc:(NSString *)desc people:(NSString *)people added:(BOOL)added { +- (void)setCharacter:(KBCharacter *)character { + _character = character; + BOOL added = character.added; self.added = added; - self.titleLabel.text = title ?: @""; - self.descLabel.text = desc ?: @""; - self.peopleLabel.text = people ?: @""; - + self.titleLabel.text = character.characterName; + self.descLabel.text = character.characterBackground; + self.peopleLabel.text = character.download; + [self.averImageView kb_setAvatarURL:character.avatarUrl placeholder:KBPlaceholderImage]; if (added) { // 已添加:灰底、对勾 self.actionBtn.backgroundColor = [UIColor colorWithWhite:0.93 alpha:1.0]; @@ -125,17 +128,6 @@ } } -- (void)setCharacter:(KBCharacter *)character { - _character = character; - - NSString *title = character.characterName ?: @""; - NSString *people = character.download ?: @""; - NSString *desc = @"Be Neither Too Close\nNor Too Distant..."; // 目前暂无描述字段,先用示例文案 - BOOL added = character.added; - - [self configureWithTitle:title desc:desc people:people added:added]; -} - #pragma mark - Lazy UI - (UIView *)shadowView { @@ -146,27 +138,22 @@ return _shadowView; } -- (UIImageView *)cardView { +- (UIView *)cardView { if (!_cardView) { - _cardView = [[UIImageView alloc] init]; + _cardView = [[UIView alloc] init]; _cardView.backgroundColor = UIColor.whiteColor; - _cardView.layer.cornerRadius = 18.0; - _cardView.layer.masksToBounds = YES; - _cardView.contentMode = UIViewContentModeScaleAspectFill; - // 默认卡片背景图(可按需要替换) - _cardView.image = [UIImage imageNamed:@"home_rank_card_bg"]; } return _cardView; } -- (UIView *)badgeCircle { - if (!_badgeCircle) { - _badgeCircle = [UIView new]; - _badgeCircle.backgroundColor = UIColor.whiteColor; - _badgeCircle.layer.borderColor = [UIColor colorWithRed:0.78 green:0.90 blue:0.20 alpha:1.0].CGColor; - _badgeCircle.layer.borderWidth = 3.0; +- (UIImageView *)averImageView { + if (!_averImageView) { + _averImageView = [UIImageView new]; + _averImageView.backgroundColor = UIColor.whiteColor; + _averImageView.layer.borderColor = [UIColor colorWithRed:0.78 green:0.90 blue:0.20 alpha:1.0].CGColor; + _averImageView.layer.borderWidth = 3.0; } - return _badgeCircle; + return _averImageView; } - (UILabel *)titleLabel { diff --git a/keyBoard/KeyBoardPrefixHeader.pch b/keyBoard/KeyBoardPrefixHeader.pch index d5ce4da..30c7571 100644 --- a/keyBoard/KeyBoardPrefixHeader.pch +++ b/keyBoard/KeyBoardPrefixHeader.pch @@ -67,6 +67,8 @@ /// 第一次安装 #define KBSexSelectShownKey @"kKBSexSelectShownKey" +#define KBPlaceholderImage [UIImage imageNamed:@"placeholder_icon"] + /// UI 尺寸/设备宏 // 屏幕尺寸 #define KB_SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)