// // HomeHeadView.m // keyBoard // // Created by Mac on 2025/11/6. // #import "HomeHeadView.h" #import "UIImage+KBColor.h" #import "KBTopImageButton.h" #import "KBVipPay.h" @interface HomeHeadView() @property (nonatomic, strong) UIImageView *loveKeyImageView; // 顶部会员卡图片 @property (nonatomic, strong) UIImageView *vipImageView; // 主/副标题 @property (nonatomic, strong) UILabel *titleLabel; @property (nonatomic, strong) UILabel *subTitleLabel; // 中部四个功能按钮容器 @property (nonatomic, strong) UIView *featuresContainer; @property (nonatomic, strong) NSArray *featureButtons; // 底部购买按钮 @property (nonatomic, strong) UIButton *buyButton; @end @implementation HomeHeadView - (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { self.backgroundColor = [UIColor clearColor]; [self setupViews]; [self setupConstraints]; [self defaultData]; } return self; } #pragma mark - Layout - (void)layoutSubviews { [super layoutSubviews]; } #pragma mark - UI - (void)setupViews { // [self addSubview:self.loveKeyImageView]; [self addSubview:self.vipImageView]; [self addSubview:self.titleLabel]; [self addSubview:self.subTitleLabel]; [self addSubview:self.featuresContainer]; [self addSubview:self.buyButton]; } - (void)setupConstraints { // 顶部图 [self.vipImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.mas_top).offset(2); make.centerX.equalTo(self); make.width.mas_equalTo(217); make.height.mas_equalTo(166); }]; // [self.loveKeyImageView mas_makeConstraints:^(MASConstraintMaker *make) { // make.top.equalTo(self.vipImageView.mas_centerY).offset(0); // make.right.equalTo(self).offset(-16); // make.width.mas_equalTo(335); // make.height.mas_equalTo(117); // }]; // 主标题 [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.vipImageView.mas_bottom).offset(28); make.centerX.equalTo(self); make.left.greaterThanOrEqualTo(self.mas_left).offset(16); make.right.lessThanOrEqualTo(self.mas_right).offset(-16); make.height.mas_equalTo(26); }]; // 副标题 [self.subTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.titleLabel.mas_bottom).offset(3); make.centerX.equalTo(self.titleLabel); make.left.greaterThanOrEqualTo(self.mas_left).offset(16); make.right.lessThanOrEqualTo(self.mas_right).offset(-16); make.height.mas_equalTo(20); }]; // 功能按钮容器 [self.featuresContainer mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.subTitleLabel.mas_bottom).offset(16); make.left.equalTo(self.mas_left).offset(16); make.right.equalTo(self.mas_right).offset(-16); make.height.mas_equalTo(80); }]; // 四个按钮等宽分布 KBTopImageButton *b0 = self.featureButtons[0]; KBTopImageButton *b1 = self.featureButtons[1]; KBTopImageButton *b2 = self.featureButtons[2]; KBTopImageButton *b3 = self.featureButtons[3]; [b0 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.top.bottom.equalTo(self.featuresContainer); }]; [b1 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(b0.mas_right); make.top.bottom.equalTo(b0); make.width.equalTo(b0); }]; [b2 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(b1.mas_right); make.top.bottom.equalTo(b0); make.width.equalTo(b0); }]; [b3 mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(b2.mas_right); make.top.bottom.right.equalTo(self.featuresContainer); make.width.equalTo(b0); }]; // 购买按钮 [self.buyButton mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.mas_left).offset(62); make.right.equalTo(self.mas_right).offset(-62); make.bottom.equalTo(self.mas_bottom).offset(0); make.height.mas_equalTo(56); }]; } - (void)defaultData { // 默认文案(使用英文,便于与示例图一致) self.titleLabel.text = @"Become A Member Of Love Key"; self.subTitleLabel.text = @"Unlock All Functions"; NSArray *titles = @[@"Wireless Sub-ai\nDialogue", @"Personalized\nKeyboard", @"Chat\nPersona", @"Emotional\nCounseling"]; NSArray *images = @[[UIImage imageNamed:@"home_ai_icon"], [UIImage imageNamed:@"home_keyboard_icon"], [UIImage imageNamed:@"home_chat_icon"], [UIImage imageNamed:@"home_emotion_icon"]]; [self configureFeatureTitles:titles images:images]; } #pragma mark - Public - (void)configureFeatureTitles:(NSArray *)titles images:(NSArray *)images { // 设置四个按钮标题与占位图片(如未传图片则生成渐变圆角占位) NSInteger count = MIN(4, titles.count); for (NSInteger i = 0; i < 4; i++) { KBTopImageButton *btn = self.featureButtons[i]; if (i < count) { btn.textLabel.text = titles[i]; } UIImage *img = (i < images.count) ? images[i] : nil; btn.iconView.image = img; } } #pragma mark - Actions - (void)onTapBuyAction { // if (self.onTapBuy) { self.onTapBuy(); } KBVipPay *vc = [[KBVipPay alloc] init]; [KB_CURRENT_NAV pushViewController:vc animated:true]; } #pragma mark - Lazy - (UIImageView *)vipImageView{ if (!_vipImageView) { _vipImageView = [[UIImageView alloc] init]; _vipImageView.image = [UIImage imageNamed:@"home_topvip_icon"]; _vipImageView.contentMode = UIViewContentModeScaleAspectFit; } return _vipImageView; } - (UIImageView *)loveKeyImageView{ if (!_loveKeyImageView) { _loveKeyImageView = [[UIImageView alloc] init]; _loveKeyImageView.image = [UIImage imageNamed:@"hoem_love_key"]; _loveKeyImageView.contentMode = UIViewContentModeScaleAspectFit; } return _loveKeyImageView; } - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; _titleLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; _titleLabel.textAlignment = NSTextAlignmentCenter; } return _titleLabel; } - (UILabel *)subTitleLabel { if (!_subTitleLabel) { _subTitleLabel = [[UILabel alloc] init]; _subTitleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; _subTitleLabel.textColor = self.titleLabel.textColor; _subTitleLabel.textAlignment = NSTextAlignmentCenter; } return _subTitleLabel; } - (UIView *)featuresContainer { if (!_featuresContainer) { _featuresContainer = [[UIView alloc] init]; // 不显式背景,保留父视图背景;如需调试可设置颜色 // _featuresContainer.backgroundColor = [UIColor colorWithWhite:0 alpha:0.02]; // 创建4个功能按钮(懒加载一并放到数组) NSMutableArray *arr = [NSMutableArray arrayWithCapacity:4]; for (int i = 0; i < 4; i++) { KBTopImageButton *btn = [[KBTopImageButton alloc] init]; btn.iconSize = CGSizeMake(54, 44); btn.spacing = 0; [self.featuresContainer addSubview:btn]; [arr addObject:btn]; } _featureButtons = [arr copy]; } return _featuresContainer; } - (NSArray *)featureButtons { // 只读访问,实际由 featuresContainer 的懒加载创建 if (!_featureButtons) { (void)self.featuresContainer; } return _featureButtons; } - (UIButton *)buyButton { if (!_buyButton) { _buyButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_buyButton setTitle:KBLocalized(@"Recharge Now") forState:UIControlStateNormal]; [_buyButton setTitleColor:[UIColor colorWithHex:0x1B1F1A] forState:UIControlStateNormal]; _buyButton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; [_buyButton setBackgroundImage:[UIImage imageNamed:@"recharge_now_icon"] forState:UIControlStateNormal]; [_buyButton addTarget:self action:@selector(onTapBuyAction) forControlEvents:UIControlEventTouchUpInside]; } return _buyButton; } @end