Files
keyboard/keyBoard/Class/Home/V/HomeHeadView.m
2025-11-13 21:22:10 +08:00

247 lines
8.4 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// HomeHeadView.m
// keyBoard
//
// Created by Mac on 2025/11/6.
//
#import "HomeHeadView.h"
#import "UIImage+KBColor.h"
#import "KBTopImageButton.h"
#import "KBJfPay.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<KBTopImageButton *> *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<NSString *> *)titles images:(NSArray<UIImage *> *)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(); }
// KBJfPay *vc = [[KBJfPay 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<KBTopImageButton *> *)featureButtons {
// 只读访问,实际由 featuresContainer 的懒加载创建
if (!_featureButtons) { (void)self.featuresContainer; }
return _featureButtons;
}
- (UIButton *)buyButton {
if (!_buyButton) {
_buyButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_buyButton setTitle:@"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