From 450798c8bddb9d9e3bec2f043ba1d3fec2f59493 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 19:33:54 +0800 Subject: [PATCH] 2 --- keyBoard/Class/Home/V/KBPanModalView.m | 91 +++++++++++--------------- keyBoard/Class/Home/V/KBTopThreeView.m | 73 +++++++++------------ 2 files changed, 71 insertions(+), 93 deletions(-) diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index 17fd41a..af6af3f 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -21,8 +21,6 @@ /// 人 @property (nonatomic, strong) UIImageView *personImageView; -@property (nonatomic, strong) UIImageView *leftImageView; -@property (nonatomic, strong) UIImageView *rightImageView; @property (nonatomic, strong) UIImageView *leftBgImageView; @property (nonatomic, strong) UIImageView *rightBgImageView; @@ -173,7 +171,7 @@ [self.bigWhiteContentView addSubview:self.secWhiteContentView]; [self.secWhiteContentView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self).inset(0); - make.top.equalTo(self.bigWhiteContentView).offset(47); + make.top.equalTo(self.bigWhiteContentView).offset(40); make.bottom.equalTo(self.bigWhiteContentView); }]; @@ -184,19 +182,26 @@ make.left.right.top.equalTo(self.secWhiteContentView); make.bottom.equalTo(self.secWhiteContentView); }]; -// [self.rightBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { -// make.left.right.top.equalTo(self.secWhiteContentView); -// make.bottom.equalTo(self.secWhiteContentView); -// }]; + [self.rightBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self.secWhiteContentView); + make.bottom.equalTo(self.secWhiteContentView); + }]; // 顶部栏 [self.secWhiteContentView addSubview:self.topBar]; [self.secWhiteContentView addSubview:self.containerView]; - // 调整层级:将人物与皇冠图添加到与 topBar 同一父视图,并放在 topBar 之下 - [self.secWhiteContentView insertSubview:self.personImageView belowSubview:self.topBar]; - [self.secWhiteContentView insertSubview:self.hgImageView belowSubview:self.topBar]; + // 调整层级:将人物与皇冠图放到左右背景图的后面(z 轴更低) + [self.secWhiteContentView insertSubview:self.personImageView belowSubview:self.leftBgImageView]; + [self.secWhiteContentView insertSubview:self.hgImageView belowSubview:self.rightBgImageView]; + + // 固定各层 zPosition,避免插入顺序导致的偶发层级问题(背景 < 人/皇冠 < 磨砂 < 顶部栏) + self.leftBgImageView.layer.zPosition = 0; + self.rightBgImageView.layer.zPosition = 0; + self.personImageView.layer.zPosition = 1; + self.hgImageView.layer.zPosition = 1; + self.topBar.layer.zPosition = 3; // [self.topBar addSubview:self.leftImageView]; // [self.topBar addSubview:self.rightImageView]; @@ -233,18 +238,6 @@ make.height.mas_equalTo(54); }]; -// [self.leftImageView mas_makeConstraints:^(MASConstraintMaker *make) { -// make.left.right.equalTo(self.topBar); -// make.top.equalTo(self.topBar); -// make.height.mas_equalTo(54); -// }]; -// [self.rightImageView mas_makeConstraints:^(MASConstraintMaker *make) { -// make.left.right.equalTo(self.topBar); -// make.top.equalTo(self.topBar); -// make.height.equalTo(self.leftImageView); -// -// }]; - [self.hotButton mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(self.topBar).offset(3); make.left.equalTo(self.topBar); @@ -273,16 +266,16 @@ [self.personImageView mas_makeConstraints:^(MASConstraintMaker *make) { // 仍按页面整体的左右边距定位,保持与改层级前的视觉一致 make.left.equalTo(self).offset(46); - make.bottom.equalTo(self.topBar.mas_top).offset(22); - make.width.mas_equalTo(70); - make.height.mas_equalTo(107); + make.bottom.equalTo(self.topBar.mas_top).offset(20); + make.width.mas_equalTo(53); + make.height.mas_equalTo(81); }]; [self.hgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(self).offset(-38); - make.bottom.equalTo(self.topBar.mas_top).offset(12); - make.width.mas_equalTo(97); - make.height.mas_equalTo(78); + make.bottom.equalTo(self.topBar.mas_top).offset(16); + make.width.mas_equalTo(82); + make.height.mas_equalTo(66); }]; } @@ -348,11 +341,24 @@ make.width.mas_equalTo(78); }]; if (index == 0) { - self.leftImageView.hidden = false; - self.rightImageView.hidden = true; - }else{ - self.leftImageView.hidden = true; - self.rightImageView.hidden = false; + self.leftBgImageView.hidden = NO; + self.rightBgImageView.hidden = YES; + self.personImageView.hidden = YES; + self.hgImageView.hidden = NO; + } else { + self.leftBgImageView.hidden = YES; + self.rightBgImageView.hidden = NO; + self.personImageView.hidden = NO; + self.hgImageView.hidden = YES; + } + + // 确认层级:把可见的装饰图放到当前背景图后面 + UIView *visibleBg = self.rightBgImageView.hidden ? self.leftBgImageView : self.rightBgImageView; + if (!self.hgImageView.hidden) { + [self.secWhiteContentView insertSubview:self.hgImageView belowSubview:visibleBg]; + } + if (!self.personImageView.hidden) { + [self.secWhiteContentView insertSubview:self.personImageView belowSubview:visibleBg]; } if (animated) { @@ -382,25 +388,6 @@ return _secWhiteContentView; } -- (UIImageView *)leftImageView{ - if (!_leftImageView) { - _leftImageView = [[UIImageView alloc] init]; - _leftImageView.image = [UIImage imageNamed:@"home_left_image"]; - _leftImageView.contentMode = UIViewContentModeScaleToFill; - } - return _leftImageView; -} - -- (UIImageView *)rightImageView{ - if (!_rightImageView) { - _rightImageView = [[UIImageView alloc] init]; - _rightImageView.image = [UIImage imageNamed:@"home_right_image"]; - _rightImageView.contentMode = UIViewContentModeScaleAspectFit; - _rightImageView.hidden = true; - } - return _rightImageView; -} - - (UIImageView *)hgImageView{ if (!_hgImageView) { _hgImageView = [[UIImageView alloc] init]; diff --git a/keyBoard/Class/Home/V/KBTopThreeView.m b/keyBoard/Class/Home/V/KBTopThreeView.m index 0f2d15d..2c95e93 100644 --- a/keyBoard/Class/Home/V/KBTopThreeView.m +++ b/keyBoard/Class/Home/V/KBTopThreeView.m @@ -9,9 +9,7 @@ /// 头像占位(圆形描边) @property (nonatomic, strong) UIView *avatarCircleView; /// 彩条卡片背景 -@property (nonatomic, strong) UIView *cardView; -/// 勋章数字(1/2/3) -@property (nonatomic, strong) UILabel *medalLabel; +@property (nonatomic, strong) UIImageView *cardImageView; /// 标题 @property (nonatomic, strong) UILabel *titleLabel; /// 底部加号按钮 @@ -32,11 +30,10 @@ - (void)setupUI { // 卡片 - [self addSubview:self.cardView]; + [self addSubview:self.cardImageView]; // 头像圆圈 [self addSubview:self.avatarCircleView]; - [self.cardView addSubview:self.medalLabel]; - [self.cardView addSubview:self.titleLabel]; + [self.cardImageView addSubview:self.titleLabel]; // 加号按钮 [self addSubview:self.plusButton]; @@ -47,25 +44,21 @@ make.width.height.mas_equalTo(68); }]; - [self.cardView mas_makeConstraints:^(MASConstraintMaker *make) { + [self.cardImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.avatarCircleView.mas_bottom).offset(-34); // 顶部悬浮重叠 make.left.right.equalTo(self); - make.height.mas_equalTo(146); + make.height.mas_equalTo(148); }]; - [self.medalLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.cardView).offset(34 + 15); - make.centerX.equalTo(self.cardView); - make.width.height.mas_equalTo(28); - }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.equalTo(self.cardView); - make.top.equalTo(self.medalLabel.mas_bottom).offset(20); + make.centerX.equalTo(self.cardImageView); + make.top.equalTo(self.cardImageView).offset(84); }]; [self.plusButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.cardView.mas_bottom).offset(12); + make.top.equalTo(self.cardImageView.mas_bottom).offset(12); make.centerX.equalTo(self); make.width.mas_equalTo(52); make.height.mas_equalTo(28); @@ -75,16 +68,29 @@ - (void)renderWithTitle:(NSString *)title rank:(NSInteger)rank { self.titleLabel.text = title.length ? title : @""; - self.medalLabel.text = [NSString stringWithFormat:@"%ld", (long)rank]; // 不同名次数的配色 UIColor *theme; + UIImage *image; switch (rank) { - case 1: theme = [UIColor colorWithRed:1.00 green:0.86 blue:0.43 alpha:1.0]; break; // 金 - case 2: theme = [UIColor colorWithRed:0.68 green:0.80 blue:1.00 alpha:1.0]; break; // 蓝 - default: theme = [UIColor colorWithRed:1.00 green:0.78 blue:0.63 alpha:1.0]; break; // 橙 + case 1: + { + theme = [UIColor colorWithRed:1.00 green:0.86 blue:0.43 alpha:1.0]; + image = [UIImage imageNamed:@"home_rank_1"]; + } + break; // 金 + case 2: { + theme = [UIColor colorWithRed:0.68 green:0.80 blue:1.00 alpha:1.0]; + image = [UIImage imageNamed:@"home_rank_2"]; + } + break; // 蓝 + default: { + theme = [UIColor colorWithRed:1.00 green:0.78 blue:0.63 alpha:1.0]; + image = [UIImage imageNamed:@"home_rank_3"]; + + } break; // 橙 } - self.cardView.backgroundColor = theme; + self.cardImageView.image = image; self.plusButton.backgroundColor = [theme colorWithAlphaComponent:0.3]; // 圆圈描边 @@ -105,28 +111,13 @@ return _avatarCircleView; } -- (UIView *)cardView { - if (!_cardView) { - _cardView = [[UIView alloc] init]; - _cardView.layer.cornerRadius = 14.0; - _cardView.layer.masksToBounds = YES; - _cardView.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1]; +- (UIImageView *)cardImageView { + if (!_cardImageView) { + _cardImageView = [[UIImageView alloc] init]; } - return _cardView; + return _cardImageView; } -- (UILabel *)medalLabel { - if (!_medalLabel) { - _medalLabel = [[UILabel alloc] init]; - _medalLabel.textAlignment = NSTextAlignmentCenter; - _medalLabel.font = [UIFont boldSystemFontOfSize:15]; - _medalLabel.textColor = [UIColor whiteColor]; - _medalLabel.backgroundColor = [UIColor colorWithWhite:0.3 alpha:0.7]; - _medalLabel.layer.cornerRadius = 14; - _medalLabel.layer.masksToBounds = YES; - } - return _medalLabel; -} - (UILabel *)titleLabel { if (!_titleLabel) { @@ -163,7 +154,7 @@ - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { - self.backgroundColor = [UIColor colorWithWhite:0.98 alpha:1]; + self.backgroundColor = [UIColor whiteColor]; [self setupUI]; } return self;