1
This commit is contained in:
@@ -135,6 +135,10 @@
|
||||
/// 左右卡片底部也有 plus 按钮
|
||||
@property (nonatomic, strong) UIButton *leftPlusButton;
|
||||
@property (nonatomic, strong) UIButton *rightPlusButton;
|
||||
/// 对应的前三名角色模型(用于回调和状态控制)
|
||||
@property (nonatomic, strong, nullable) KBCharacter *firstCharacter;
|
||||
@property (nonatomic, strong, nullable) KBCharacter *secondCharacter;
|
||||
@property (nonatomic, strong, nullable) KBCharacter *thirdCharacter;
|
||||
@end
|
||||
|
||||
@implementation KBTopThreeView
|
||||
@@ -203,21 +207,78 @@
|
||||
}
|
||||
|
||||
- (void)configWithCharacters:(NSArray<KBCharacter *> *)characters {
|
||||
if (characters.count == 0) {
|
||||
// 无数据时清空标题与头像
|
||||
self.firstCharacter = characters.count > 0 ? characters[0] : nil;
|
||||
self.secondCharacter = characters.count > 1 ? characters[1] : nil;
|
||||
self.thirdCharacter = characters.count > 2 ? characters[2] : nil;
|
||||
|
||||
if (self.firstCharacter) {
|
||||
[self.centerCard renderWithCharacter:self.firstCharacter rank:1];
|
||||
} else {
|
||||
[self.centerCard renderWithCharacter:[KBCharacter new] rank:1];
|
||||
[self.leftCard renderWithCharacter:[KBCharacter new] rank:2];
|
||||
[self.rightCard renderWithCharacter:[KBCharacter new] rank:3];
|
||||
return;
|
||||
}
|
||||
|
||||
KBCharacter *first = characters.count > 0 ? characters[0] : nil;
|
||||
KBCharacter *second = characters.count > 1 ? characters[1] : nil;
|
||||
KBCharacter *third = characters.count > 2 ? characters[2] : nil;
|
||||
if (self.secondCharacter) {
|
||||
[self.leftCard renderWithCharacter:self.secondCharacter rank:2];
|
||||
} else {
|
||||
[self.leftCard renderWithCharacter:[KBCharacter new] rank:2];
|
||||
}
|
||||
|
||||
if (first) [self.centerCard renderWithCharacter:first rank:1];
|
||||
if (second) [self.leftCard renderWithCharacter:second rank:2];
|
||||
if (third) [self.rightCard renderWithCharacter:third rank:3];
|
||||
if (self.thirdCharacter) {
|
||||
[self.rightCard renderWithCharacter:self.thirdCharacter rank:3];
|
||||
} else {
|
||||
[self.rightCard renderWithCharacter:[KBCharacter new] rank:3];
|
||||
}
|
||||
|
||||
// 根据 added 状态刷新三个加号按钮的 UI 和可点击状态
|
||||
[self updatePlusButtonsState];
|
||||
}
|
||||
|
||||
- (void)onCenterPlusTappedInternal {
|
||||
if (self.onCenterPlusTapped) {
|
||||
self.onCenterPlusTapped(self.firstCharacter);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)onLeftPlusTappedInternal {
|
||||
if (self.onLeftPlusTapped) {
|
||||
self.onLeftPlusTapped(self.secondCharacter);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)onRightPlusTappedInternal {
|
||||
if (self.onRightPlusTapped) {
|
||||
self.onRightPlusTapped(self.thirdCharacter);
|
||||
}
|
||||
}
|
||||
|
||||
/// 根据角色是否已添加,更新三个底部按钮的文案与状态
|
||||
- (void)updatePlusButtonsState {
|
||||
[self updatePlusButton:self.plusButton withCharacter:self.firstCharacter];
|
||||
[self updatePlusButton:self.leftPlusButton withCharacter:self.secondCharacter];
|
||||
[self updatePlusButton:self.rightPlusButton withCharacter:self.thirdCharacter];
|
||||
}
|
||||
|
||||
- (void)updatePlusButton:(UIButton *)button withCharacter:(KBCharacter * _Nullable)character {
|
||||
if (!character) {
|
||||
button.hidden = YES;
|
||||
return;
|
||||
}
|
||||
button.hidden = NO;
|
||||
|
||||
BOOL added = character.added;
|
||||
if (added) {
|
||||
// 已添加:灰色背景 + 勾选,且禁用点击
|
||||
[button setTitle:@"✓" forState:UIControlStateNormal];
|
||||
[button setTitleColor:[UIColor colorWithWhite:0.45 alpha:1.0] forState:UIControlStateNormal];
|
||||
button.backgroundColor = [UIColor colorWithWhite:0.92 alpha:1.0];
|
||||
button.enabled = NO;
|
||||
} else {
|
||||
// 未添加:绿色加号,可点击
|
||||
[button setTitle:@"+" forState:UIControlStateNormal];
|
||||
[button setTitleColor:[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] forState:UIControlStateNormal];
|
||||
button.backgroundColor = [[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] colorWithAlphaComponent:0.15];
|
||||
button.enabled = YES;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Lazy
|
||||
@@ -235,6 +296,7 @@
|
||||
_plusButton.layer.masksToBounds = YES;
|
||||
// 默认浅色背景,可按需要在外层配置
|
||||
_plusButton.backgroundColor = [[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] colorWithAlphaComponent:0.15];
|
||||
[_plusButton addTarget:self action:@selector(onCenterPlusTappedInternal) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _plusButton;
|
||||
}
|
||||
@@ -248,6 +310,7 @@
|
||||
_leftPlusButton.layer.cornerRadius = 14.0;
|
||||
_leftPlusButton.layer.masksToBounds = YES;
|
||||
_leftPlusButton.backgroundColor = [[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] colorWithAlphaComponent:0.15];
|
||||
[_leftPlusButton addTarget:self action:@selector(onLeftPlusTappedInternal) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _leftPlusButton;
|
||||
}
|
||||
@@ -261,6 +324,7 @@
|
||||
_rightPlusButton.layer.cornerRadius = 14.0;
|
||||
_rightPlusButton.layer.masksToBounds = YES;
|
||||
_rightPlusButton.backgroundColor = [[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] colorWithAlphaComponent:0.15];
|
||||
[_rightPlusButton addTarget:self action:@selector(onRightPlusTappedInternal) forControlEvents:UIControlEventTouchUpInside];
|
||||
}
|
||||
return _rightPlusButton;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user