Files
keyboard/keyBoard/Class/Pay/V/KBVipPayHeaderView.m
2025-11-14 19:48:15 +08:00

148 lines
5.3 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.

//
// KBVipPayHeaderView.m
// keyBoard
//
// 中文注释:顶部头图区域,使用 Masonry 布局,包含 5 张图片。
//
#import "KBVipPayHeaderView.h"
@interface KBVipPayHeaderView ()
// 容器(为了便于以 KB_NAV_TOTAL_HEIGHT 作为内容起点)
@property (nonatomic, strong) UIView *containerView;
// 顶部大图pay_vip_icon
@property (nonatomic, strong) UIImageView *vipImageView;
// 功能图标四宫格
@property (nonatomic, strong) UIImageView *aiImageView;
@property (nonatomic, strong) UIImageView *keyboardImageView;
@property (nonatomic, strong) UIImageView *chatImageView;
@property (nonatomic, strong) UIImageView *emotionImageView;
@end
@implementation KBVipPayHeaderView
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
self.backgroundColor = [UIColor clearColor];
[self addSubview:self.containerView];
[self.containerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
// 1. 顶部大图(略微下移,避开自定义导航栏)
[self.containerView addSubview:self.vipImageView];
[self.vipImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.containerView).offset(16);
make.right.equalTo(self.containerView).offset(-16);
make.top.equalTo(self.containerView).offset(KB_NAV_TOTAL_HEIGHT + 8);
make.height.mas_equalTo(KBFit(180));
}];
// 2. 下方四宫格图标(简单示意)
UIView *g1 = [self gridItemWithImageView:self.aiImageView];
UIView *g2 = [self gridItemWithImageView:self.keyboardImageView];
UIView *g3 = [self gridItemWithImageView:self.chatImageView];
UIView *g4 = [self gridItemWithImageView:self.emotionImageView];
[self.containerView addSubview:g1];
[self.containerView addSubview:g2];
[self.containerView addSubview:g3];
[self.containerView addSubview:g4];
CGFloat spacing = 12;
[g1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.vipImageView);
make.top.equalTo(self.vipImageView.mas_bottom).offset(18);
make.height.mas_equalTo(KBFit(90));
}];
[g2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.vipImageView);
make.top.equalTo(g1);
make.height.equalTo(g1);
make.left.equalTo(g1.mas_right).offset(spacing);
make.width.equalTo(g1);
}];
[g3 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(g1);
make.top.equalTo(g1.mas_bottom).offset(spacing);
make.height.equalTo(g1);
make.width.equalTo(g1);
}];
[g4 mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.vipImageView);
make.top.equalTo(g3);
make.left.equalTo(g3.mas_right).offset(spacing);
make.height.equalTo(g1);
make.width.equalTo(g1);
make.bottom.lessThanOrEqualTo(self.containerView).offset(-12);
}];
}
return self;
}
#pragma mark - Helpers
- (UIView *)gridItemWithImageView:(UIImageView *)iv {
// 简单白底圆角卡片承载图标
UIView *v = [UIView new];
v.backgroundColor = [UIColor colorWithWhite:0.97 alpha:1.0];
v.layer.cornerRadius = 12;
v.layer.masksToBounds = YES;
[v addSubview:iv];
[iv mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.equalTo(v);
make.width.height.mas_equalTo(40);
}];
return v;
}
#pragma mark - Lazy
- (UIView *)containerView {
if (!_containerView) {
_containerView = [UIView new];
_containerView.backgroundColor = [UIColor clearColor];
}
return _containerView;
}
- (UIImageView *)vipImageView {
if (!_vipImageView) {
_vipImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_vip_icon"]];
_vipImageView.contentMode = UIViewContentModeScaleAspectFill;
_vipImageView.clipsToBounds = YES;
_vipImageView.layer.cornerRadius = 14;
}
return _vipImageView;
}
- (UIImageView *)aiImageView {
if (!_aiImageView) {
_aiImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_ai_icon"]];
_aiImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _aiImageView;
}
- (UIImageView *)keyboardImageView {
if (!_keyboardImageView) {
_keyboardImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_keyboard_icon"]];
_keyboardImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _keyboardImageView;
}
- (UIImageView *)chatImageView {
if (!_chatImageView) {
_chatImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_chat_icon"]];
_chatImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _chatImageView;
}
- (UIImageView *)emotionImageView {
if (!_emotionImageView) {
_emotionImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pay_emotion_icon"]];
_emotionImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _emotionImageView;
}
@end