This commit is contained in:
启星
2025-11-06 13:04:04 +08:00
parent 4aa2fac912
commit 406c481ba4
105 changed files with 1449 additions and 251 deletions

View File

@@ -13,6 +13,9 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSMutableArray *dataArray; @property (nonatomic,strong)NSMutableArray *dataArray;
@property (nonatomic,assign)NSInteger page; @property (nonatomic,assign)NSInteger page;
@property (nonatomic,assign)BOOL bgImageHidden; @property (nonatomic,assign)BOOL bgImageHidden;
/// 是否不参与换肤
@property (nonatomic,assign)BOOL isNoChangeBgImage;
@property (nonatomic,strong)UIColor *navigationTintColor;
//交给子类来实现 //交给子类来实现
-(void)setNavgationItems; -(void)setNavgationItems;
-(void)initSubViews; -(void)initSubViews;

View File

@@ -19,9 +19,13 @@
[super viewDidLoad]; [super viewDidLoad];
// Do any additional setup after loading the view. // Do any additional setup after loading the view.
[self.view insertSubview:self.bgImageView atIndex:0]; [self.view insertSubview:self.bgImageView atIndex:0];
if (self.isNoChangeBgImage) {
///
}else{
[self updateBgImage:QXConfig.backgroundImage]; [self updateBgImage:QXConfig.backgroundImage];
[self initSubViews]; }
[self setNavgationItems]; [self setNavgationItems];
[self initSubViews];
[self getData]; [self getData];
self.page = 1; self.page = 1;
} }
@@ -41,6 +45,11 @@
- (void)getData{ - (void)getData{
} }
-(void)setNavigationTintColor:(UIColor *)navigationTintColor{
_navigationTintColor = navigationTintColor;
[self.backBtn setImage:[[UIImage imageNamed:@"back"] imageByTintColor:navigationTintColor] forState:(UIControlStateNormal)];
}
-(void)setNavgationItems{ -(void)setNavgationItems{
UIButton*backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)]; UIButton*backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
[backBtn setImage:[UIImage imageNamed:@"back"] forState:(UIControlStateNormal)]; [backBtn setImage:[UIImage imageNamed:@"back"] forState:(UIControlStateNormal)];

View File

@@ -63,6 +63,7 @@
@implementation QXHomeViewController @implementation QXHomeViewController
- (void)viewDidLoad { - (void)viewDidLoad {
self.isNoChangeBgImage = YES;
[super viewDidLoad]; [super viewDidLoad];
// Do any additional setup after loading the view. // Do any additional setup after loading the view.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:noticeUserLogin object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:noticeUserLogin object:nil];
@@ -75,11 +76,7 @@
} }
- (void)initSubViews{ - (void)initSubViews{
if ([QXConfig.backgroundImage hasPrefix:@"http"] || [QXConfig.backgroundImage hasPrefix:@"https"]) {
[self updateBgImage:QXConfig.backgroundImage];
}else{
[self updateBgImage:@"app_home_bg"]; [self updateBgImage:@"app_home_bg"];
}
UIImageView *logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yusheng"]]; UIImageView *logoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yusheng"]];
[self.view addSubview:logoImageView]; [self.view addSubview:logoImageView];
[logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { [logoImageView mas_makeConstraints:^(MASConstraintMaker *make) {

View File

@@ -29,19 +29,23 @@
#import "QXInviteViewController.h" #import "QXInviteViewController.h"
#import "QXChatViewController.h" #import "QXChatViewController.h"
#import "QXWalletRuleView.h" #import "QXWalletRuleView.h"
#import "QXRechargeViewcController.h"
#import "QXGiftWallViewController.h"
#import <WXApi.h>
@interface QXMineViewController ()<UITableViewDelegate,UITableViewDataSource,QXMineServiceCellDelegate,QXMainHeaderViewDelegate> @interface QXMineViewController ()<UITableViewDelegate,UITableViewDataSource,QXMineServiceCellDelegate,QXMainHeaderViewDelegate>
@property (nonatomic,strong)QXMainHeaderView *tableHeaderView; @property (nonatomic,strong)QXMainHeaderView *tableHeaderView;
@property (nonatomic,strong)UITableView *tableView; @property (nonatomic,strong)UITableView *tableView;
@property (nonatomic,strong)UIButton *redbagBtn; //@property (nonatomic,strong)UIButton *redbagBtn;
@property (nonatomic,strong)UIButton *serviceBtn; //@property (nonatomic,strong)UIButton *serviceBtn;
@property (nonatomic,strong)UIButton *settingBtn; //@property (nonatomic,strong)UIButton *settingBtn;
@property (nonatomic,strong)QXUserModel *userModel; @property (nonatomic,strong)QXUserModel *userModel;
@end @end
@implementation QXMineViewController @implementation QXMineViewController
- (void)viewDidLoad { - (void)viewDidLoad {
self.isNoChangeBgImage = YES;
[super viewDidLoad]; [super viewDidLoad];
// Do any additional setup after loading the view. // Do any additional setup after loading the view.
@@ -51,34 +55,31 @@
[self.navigationController setNavigationBarHidden:YES animated:YES]; [self.navigationController setNavigationBarHidden:YES animated:YES];
[self getUserInfo]; [self getUserInfo];
[self.tableView reloadData]; [self.tableView reloadData];
if (QXGlobal.shareGlobal.isOpenRecharge) { [self.tableHeaderView reloadData];
self.redbagBtn.hidden = NO;
}else{
self.redbagBtn.hidden = YES;
}
} }
- (void)initSubViews{ - (void)initSubViews{
[self updateBgImage:@"app_home_bg"];
self.tableView.tableHeaderView = self.tableHeaderView; self.tableView.tableHeaderView = self.tableHeaderView;
[self.view addSubview:self.tableView]; [self.view addSubview:self.tableView];
[self.view addSubview:self.settingBtn]; // [self.view addSubview:self.settingBtn];
[self.view addSubview:self.serviceBtn]; // [self.view addSubview:self.serviceBtn];
[self.view addSubview:self.redbagBtn]; // [self.view addSubview:self.redbagBtn];
[self.settingBtn mas_makeConstraints:^(MASConstraintMaker *make) { // [self.settingBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(kSafeAreaTop +10); // make.top.mas_equalTo(kSafeAreaTop +10);
make.right.mas_equalTo(-10); // make.right.mas_equalTo(-10);
make.width.height.mas_equalTo(30); // make.width.height.mas_equalTo(30);
}]; // }];
//
[self.serviceBtn mas_makeConstraints:^(MASConstraintMaker *make) { // [self.serviceBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(30); // make.width.height.mas_equalTo(30);
make.centerY.equalTo(self.settingBtn); // make.centerY.equalTo(self.settingBtn);
make.right.equalTo(self.settingBtn.mas_left).offset(-10); // make.right.equalTo(self.settingBtn.mas_left).offset(-10);
}]; // }];
[self.redbagBtn mas_makeConstraints:^(MASConstraintMaker *make) { // [self.redbagBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.serviceBtn.mas_left).offset(-10); // make.right.equalTo(self.serviceBtn.mas_left).offset(-10);
make.centerY.width.height.equalTo(self.settingBtn); // make.centerY.width.height.equalTo(self.settingBtn);
}]; // }];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(passwordDidChanged) name:noticeChangePassword object:nil]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(passwordDidChanged) name:noticeChangePassword object:nil];
} }
-(void)getUserInfo{ -(void)getUserInfo{
@@ -89,39 +90,63 @@
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) { } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}]; }];
[QXMineNetwork getWalletInfoSuccessBlock:^(NSString * _Nonnull coin, NSString * _Nonnull earnings, NSString * _Nonnull title, NSString * _Nonnull url) {
weakSelf.tableHeaderView.coin = coin;
weakSelf.tableHeaderView.earnings = earnings;
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
} }
#pragma mark - QXMineServiceCellDelegate #pragma mark - QXMineServiceCellDelegate
-(void)didClickServiceWithBtn:(UIButton *)button title:(NSString *)title{ -(void)didClickServiceWithType:(QXMineServiceType)type{
UIViewController *vc; switch (type) {
if ([title isEqualToString:QXText(@"道具商城")]) { case QXMineServiceTypeLevel:{
vc = [[QXPropShopViewController alloc] init]; QXLevelViewController *vc = [[QXLevelViewController alloc] init];
}else if([title isEqualToString:QXText(@"段位")]){
vc = [[QXLevelViewController alloc] init];
}else if([title isEqualToString:QXText(@"公会中心")]){
vc = [[QXGuildViewController alloc] init];
}else if([title isEqualToString:QXText(@"个性装扮")]){
vc = [[QXDressViewController alloc] init];
}else if([title isEqualToString:QXText(@"我的背包")]){
vc = [[QXBackpackViewController alloc] init];
}else if([title isEqualToString:QXText(@"每日任务")]){
vc = [[QXTaskViewController alloc] init];
}else if([title isEqualToString:QXText(@"钱包")]){
BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:kWalletRuleHide];
if (result) {
vc = [[QXWalletViewController alloc] init];
}else{
QXWalletRuleView *ruleView = [[QXWalletRuleView alloc] init];
MJWeakSelf
ruleView.toWalletBlock = ^{
QXWalletViewController*vc = [[QXWalletViewController alloc] init];
[weakSelf.navigationController pushViewController:vc animated:YES];
};
[ruleView showInView:self.view];
return;
}
}
[self.navigationController pushViewController:vc animated:YES]; [self.navigationController pushViewController:vc animated:YES];
QXLOG(@"点击了%@",title); }
break;
case QXMineServiceTypeDress:{
QXDressViewController *vc = [[QXDressViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
break;
case QXMineServiceTypeBackpack:{
QXBackpackViewController *vc = [[QXBackpackViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
break;
case QXMineServiceTypeSetting:{
[self gotoSetting];
}
break;
case QXMineServiceTypeHelp:{
[self gotoService];
}
break;
case QXMineServiceTypeInvite:{
[self gotoInvite];
}
break;
case QXMineServiceTypeDayTask:{
QXTaskViewController *vc = [[QXTaskViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
break;
case QXMineServiceTypeReport:{
[self gotoService];
}
break;
case QXMineServiceTypeCustomerService:{
WXOpenCustomerServiceReq *req = [[WXOpenCustomerServiceReq alloc] init];
req.corpid = @"ww1de4300858c0b461";
req.url = @"https://work.weixin.qq.com/kfid/kfcb3d23a59c188a0e7";
[WXApi sendReq:req completion:nil];
}
break;
default:
break;
}
} }
-(void)didClickOptionType:(QXMainHeaderOptionType)type{ -(void)didClickOptionType:(QXMainHeaderOptionType)type{
MJWeakSelf MJWeakSelf
@@ -140,12 +165,56 @@
[self.navigationController pushViewController:vc animated:YES]; [self.navigationController pushViewController:vc animated:YES];
} }
break; break;
case QXMainHeaderOptionTypeRealName:{ case QXMainHeaderOptionTypeNobility:{
QXLOG(@"跳转实名认证"); QXLOG(@"跳转贵族");
} }
break; break;
case QXMainHeaderOptionTypeAnchorCenter:{ case QXMainHeaderOptionTypeRecharge:{
QXLOG(@"跳转主播中心"); QXLOG(@"跳转充值");
QXRechargeViewcController *vc = [[QXRechargeViewcController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
break;
case QXMainHeaderOptionTypeShop:{
QXLOG(@"跳转商城");
QXPropShopViewController *vc = [[QXPropShopViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
break;
case QXMainHeaderOptionTypeGuild:{
QXLOG(@"跳转公会");
QXGuildViewController *vc = [[QXGuildViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
break;
case QXMainHeaderOptionTypeFriend:{
QXLOG(@"跳转挚友");
}
break;
case QXMainHeaderOptionTypeGiftWall:{
QXLOG(@"跳转礼物墙");
QXGiftWallViewController *vc = [[QXGiftWallViewController alloc] init];
vc.userId = [QXGlobal shareGlobal].loginModel.user_id;
[self.navigationController pushViewController:vc animated:YES];
}
break;
case QXMainHeaderOptionTypeWallet:{
QXLOG(@"跳转钱包");
BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:kWalletRuleHide];
if (result) {
QXWalletViewController * vc = [[QXWalletViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}else{
QXWalletRuleView *ruleView = [[QXWalletRuleView alloc] init];
MJWeakSelf
ruleView.toWalletBlock = ^{
QXWalletViewController*vc = [[QXWalletViewController alloc] init];
[weakSelf.navigationController pushViewController:vc animated:YES];
};
[ruleView showInView:self.view];
}
} }
break; break;
case QXMainHeaderOptionTypeRoom:{ case QXMainHeaderOptionTypeRoom:{
@@ -198,15 +267,29 @@
#pragma mark - UITableViewDelegate,UITableViewDataSource #pragma mark - UITableViewDelegate,UITableViewDataSource
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 1; return 2;
} }
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
QXMineServiceCell *cell = [QXMineServiceCell cellWithTableView:tableView]; QXMineServiceCell *cell = [QXMineServiceCell cellWithTableView:tableView];
cell.delegate = self; cell.delegate = self;
[cell cellReload]; if (indexPath.row == 0) {
cell.isMore = NO;
}else{
cell.isMore = YES;
}
return cell; return cell;
} }
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row == 0) {
return ScaleWidth(110);
}else{
if (QXGlobal.shareGlobal.isOpenRecharge) {
return ScaleWidth(168);
}else{
return ScaleWidth(110);
}
}
}
-(void)gotoSetting{ -(void)gotoSetting{
QXSettingViewController *vc = [[QXSettingViewController alloc] init]; QXSettingViewController *vc = [[QXSettingViewController alloc] init];
@@ -220,7 +303,7 @@
}; };
[self.navigationController pushViewController:vc animated:YES]; [self.navigationController pushViewController:vc animated:YES];
} }
-(void)gotoRedbag{ -(void)gotoInvite{
QXInviteViewController *vc = [[QXInviteViewController alloc] init]; QXInviteViewController *vc = [[QXInviteViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES]; [self.navigationController pushViewController:vc animated:YES];
} }
@@ -262,49 +345,48 @@
-(QXMainHeaderView *)tableHeaderView{ -(QXMainHeaderView *)tableHeaderView{
if (!_tableHeaderView) { if (!_tableHeaderView) {
_tableHeaderView = [[QXMainHeaderView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 230+12-67+ScaleWidth(67))]; _tableHeaderView = [[QXMainHeaderView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 0)];
_tableHeaderView.height = _tableHeaderView.getHeight;
_tableHeaderView.delegate = self; _tableHeaderView.delegate = self;
} }
return _tableHeaderView; return _tableHeaderView;
} }
-(UITableView *)tableView{ -(UITableView *)tableView{
if (!_tableView) { if (!_tableView) {
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-TabbarContentHeight-kSafeAreaTop) style:UITableViewStylePlain]; self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-TabbarContentHeight) style:UITableViewStylePlain];
self.tableView.backgroundColor = [UIColor clearColor]; self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.delegate = self; self.tableView.delegate = self;
self.tableView.dataSource = self; self.tableView.dataSource = self;
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.rowHeight = 164;
} }
return _tableView; return _tableView;
} }
-(UIButton *)settingBtn{ //-(UIButton *)settingBtn{
if (!_settingBtn) { // if (!_settingBtn) {
_settingBtn = [[UIButton alloc] init]; // _settingBtn = [[UIButton alloc] init];
[_settingBtn setImage:[UIImage imageNamed:@"mine_setting"] forState:UIControlStateNormal]; // [_settingBtn setImage:[UIImage imageNamed:@"mine_setting"] forState:UIControlStateNormal];
[_settingBtn setImage:[UIImage imageNamed:@"mine_setting"] forState:UIControlStateHighlighted]; // [_settingBtn setImage:[UIImage imageNamed:@"mine_setting"] forState:UIControlStateHighlighted];
[_settingBtn addTarget:self action:@selector(gotoSetting) forControlEvents:UIControlEventTouchUpInside]; // [_settingBtn addTarget:self action:@selector(gotoSetting) forControlEvents:UIControlEventTouchUpInside];
} // }
return _settingBtn; // return _settingBtn;
} //}
- (UIButton *)redbagBtn { //- (UIButton *)redbagBtn {
if (!_redbagBtn) { // if (!_redbagBtn) {
_redbagBtn = [[UIButton alloc] init]; // _redbagBtn = [[UIButton alloc] init];
[_redbagBtn setImage:[UIImage imageNamed:@"mine_redbag"] forState:UIControlStateNormal]; // [_redbagBtn setImage:[UIImage imageNamed:@"mine_redbag"] forState:UIControlStateNormal];
[_redbagBtn setImage:[UIImage imageNamed:@"mine_redbag"] forState:UIControlStateHighlighted]; // [_redbagBtn setImage:[UIImage imageNamed:@"mine_redbag"] forState:UIControlStateHighlighted];
[_redbagBtn addTarget:self action:@selector(gotoRedbag) forControlEvents:UIControlEventTouchUpInside]; // [_redbagBtn addTarget:self action:@selector(gotoRedbag) forControlEvents:UIControlEventTouchUpInside];
} // }
return _redbagBtn; // return _redbagBtn;
} //}
//
- (UIButton *)serviceBtn { //- (UIButton *)serviceBtn {
if (!_serviceBtn) { // if (!_serviceBtn) {
_serviceBtn = [[UIButton alloc] init]; // _serviceBtn = [[UIButton alloc] init];
[_serviceBtn setImage:[UIImage imageNamed:@"mine_service"] forState:UIControlStateNormal]; // [_serviceBtn setImage:[UIImage imageNamed:@"mine_service"] forState:UIControlStateNormal];
[_serviceBtn setImage:[UIImage imageNamed:@"mine_service"] forState:UIControlStateHighlighted]; // [_serviceBtn setImage:[UIImage imageNamed:@"mine_service"] forState:UIControlStateHighlighted];
[_serviceBtn addTarget:self action:@selector(gotoService) forControlEvents:UIControlEventTouchUpInside]; // [_serviceBtn addTarget:self action:@selector(gotoService) forControlEvents:UIControlEventTouchUpInside];
} // }
return _serviceBtn; // return _serviceBtn;
} //}
@end @end

View File

@@ -89,7 +89,7 @@
self.categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView; self.categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView;
self.navigationController.interactivePopGestureRecognizer.enabled = (self.categoryView.selectedIndex == 0); // self.navigationController.interactivePopGestureRecognizer.enabled = (self.categoryView.selectedIndex == 0);
// self.backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, kSafeAreaTop, 40, 40)]; // self.backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, kSafeAreaTop, 40, 40)];

View File

@@ -0,0 +1,19 @@
//
// QXGiftWallSubViewController.h
// QXLive
//
// Created by 启星 on 2025/11/5.
//
#import "QXBaseViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface QXGiftWallSubViewController : QXBaseViewController<JXCategoryListContentViewDelegate>
/// 是否为已点亮
@property(nonatomic,assign)BOOL isLight;
/// 数据源
@property(nonatomic,strong)NSArray<QXUserGiftWallModel*> *giftArray;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,62 @@
//
// QXGiftWallSubViewController.m
// QXLive
//
// Created by on 2025/11/5.
//
#import "QXGiftWallSubViewController.h"
#import "QXMineGiftWallCell.h"
@interface QXGiftWallSubViewController ()<UICollectionViewDelegate,UICollectionViewDataSource>
@property (nonatomic,strong)UICollectionView *collectionView;
@end
@implementation QXGiftWallSubViewController
-(UIView *)listView{
return self.view;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)initSubViews{
self.bgImageHidden = YES;
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
int itemWidth = (SCREEN_WIDTH-16*2-12*2)/3;
layout.itemSize = CGSizeMake(itemWidth, ScaleWidth(143));
layout.minimumLineSpacing = 12;
layout.minimumInteritemSpacing = 12;
layout.sectionInset = UIEdgeInsetsMake(0, 16, 0, 16);
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
[self.collectionView registerNib:[UINib nibWithNibName:@"QXMineGiftWallCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXMineGiftWallCell"];
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
self.collectionView.showsHorizontalScrollIndicator = NO;
self.collectionView.bounces = NO;
self.collectionView.pagingEnabled = NO;
self.collectionView.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.collectionView];
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(0);
make.top.mas_equalTo(0);
make.bottom.mas_equalTo(0);
make.right.mas_equalTo(0);
}];
}
-(void)setGiftArray:(NSArray<QXUserGiftWallModel *> *)giftArray{
_giftArray = giftArray;
[self.collectionView reloadData];
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return self.giftArray.count;
}
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
QXMineGiftWallCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXMineGiftWallCell" forIndexPath:indexPath];
cell.isLight = self.isLight;
cell.model = self.giftArray[indexPath.row];
return cell;
}
@end

View File

@@ -0,0 +1,16 @@
//
// QXGiftWallViewController.h
// QXLive
//
// Created by 启星 on 2025/11/5.
//
#import "QXBaseViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface QXGiftWallViewController : QXBaseViewController
@property (nonatomic,strong)NSString*userId;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,118 @@
//
// QXGiftWallViewController.m
// QXLive
//
// Created by on 2025/11/5.
//
#import "QXGiftWallViewController.h"
#import "QXGiftWallSubViewController.h"
#import "QXMineNetwork.h"
@interface QXGiftWallViewController ()<JXCategoryViewDelegate,JXCategoryListContainerViewDelegate>
@property (nonatomic,strong)JXCategoryTitleView *categoryView;
@property (nonatomic,strong)JXCategoryListContainerView *containerView;
@property (nonatomic,strong)NSMutableArray <UIViewController*>*listVCArray;
@property (nonatomic,strong)NSArray*titles;
@property (nonatomic,strong)QXGiftWallSubViewController *lightVC;
@property (nonatomic,strong)QXGiftWallSubViewController *grayVC;
@end
@implementation QXGiftWallViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:RGB16(0xffffff)};
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:RGB16(0x000000)};
}
-(void)setNavgationItems{
[super setNavgationItems];
self.navigationItem.title = @"礼物墙";
}
-(void)initSubViews{
// if ([QXConfig.backgroundImage hasPrefix:@"http"] || [QXConfig.backgroundImage hasPrefix:@"https"]) {
// [self updateBgImage:QXConfig.backgroundImage];
// }else{
[self updateBgImage:@"home_rank_vc_bg"];
// }
self.navigationTintColor = RGB16(0xffffff);
self.view.backgroundColor = [UIColor clearColor];
// self.titles = @[@"房间榜", @"财富榜", @"魅力榜",@"公会榜",@"真爱榜"];
self.titles = @[@"已点亮", @"未点亮"];
self.listVCArray = [NSMutableArray array];
self.categoryView = [[JXCategoryTitleView alloc] init];
self.categoryView.frame = CGRectMake(16, NavContentHeight, SCREEN_WIDTH, 44);
self.categoryView.delegate = self;
self.categoryView.titles = self.titles;
self.categoryView.titleSelectedColor = [UIColor colorWithHexString:@"#ffffff"];
self.categoryView.titleColor = [UIColor colorWithHexString:@"#ffffff"];
JXCategoryIndicatorImageView *indicatorImageView = [[JXCategoryIndicatorImageView alloc] init];
indicatorImageView.indicatorImageView.image = [UIImage imageNamed:@"home_slider"];
indicatorImageView.indicatorWidth = (SCREEN_WIDTH-100)/self.titles.count;
indicatorImageView.indicatorHeight = 5;
self.categoryView.indicators = @[indicatorImageView];
self.categoryView.cellWidth = JXCategoryViewAutomaticDimension;
self.categoryView.contentEdgeInsetLeft = 5;
self.categoryView.cellSpacing = 20;
self.categoryView.titleLabelZoomScale = 1.1;
self.categoryView.titleLabelZoomEnabled = YES;
self.categoryView.titleFont = [UIFont systemFontOfSize:14];
self.categoryView.averageCellSpacingEnabled = NO;
self.containerView = [[JXCategoryListContainerView alloc] initWithType:(JXCategoryListContainerType_ScrollView) delegate:self];
self.containerView.frame = CGRectMake(0, self.categoryView.bottom, SCREEN_WIDTH, SCREEN_HEIGHT-self.categoryView.bottom);
[self.view addSubview: self.categoryView];
[self.view addSubview:self.containerView];
self.categoryView.listContainer = self.containerView;
[self getGiftWall];
}
-(void)getGiftWall{
MJWeakSelf
[QXMineNetwork userGiftWallithUserId:self.userId successBlock:^(NSArray<QXUserGiftWallModel *> * _Nonnull lightList, NSArray<QXUserGiftWallModel *> * _Nonnull grayList) {
weakSelf.lightVC.giftArray = lightList;
weakSelf.grayVC.giftArray = grayList;
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
}
-(NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView{
return self.titles.count;
}
-(id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
if (index == 0) {
return self.lightVC;
}else{
return self.grayVC;
}
}
-(QXGiftWallSubViewController *)lightVC{
if (!_lightVC) {
_lightVC = [[QXGiftWallSubViewController alloc] init];
_lightVC.isLight = YES;
}
return _lightVC;
}
-(QXGiftWallSubViewController *)grayVC{
if (!_grayVC) {
_grayVC = [[QXGiftWallSubViewController alloc] init];
_grayVC.isLight = NO;
}
return _grayVC;
}
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index {
self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0);
}
@end

View File

@@ -0,0 +1,21 @@
//
// QXServiceModel.h
// QXLive
//
// Created by 启星 on 2025/11/4.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface QXServiceModel : NSObject
/// 标题
@property (nonatomic,strong)NSString *title;
/// 类型
@property (nonatomic,assign)NSInteger type;
@property (nonatomic,strong)NSString* icon;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,12 @@
//
// QXServiceModel.m
// QXLive
//
// Created by on 2025/11/4.
//
#import "QXServiceModel.h"
@implementation QXServiceModel
@end

View File

@@ -11,21 +11,11 @@ NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger) { typedef NS_ENUM(NSInteger) {
/// 个人主页 /// 个人主页
QXMainHeaderOptionTypeGotoHome = 0, QXMainHeaderOptionTypeGotoHome = 0,
/// 实名认证
QXMainHeaderOptionTypeRealName = 1,
/// 主播中心
QXMainHeaderOptionTypeAnchorCenter = 2,
/// 开启直播
QXMainHeaderOptionTypeStartLive = 3,
/// 编辑 /// 编辑
QXMainHeaderOptionTypeGotoEdit = 4, QXMainHeaderOptionTypeGotoEdit = 1,
/// 贵族
QXMainHeaderOptionTypeNobility = 2,
/// 房间
QXMainHeaderOptionTypeRoom = 5,
/// 关注 /// 关注
QXMainHeaderOptionTypeFocus = 20, QXMainHeaderOptionTypeFocus = 20,
@@ -36,10 +26,25 @@ typedef NS_ENUM(NSInteger) {
/// 访客 /// 访客
QXMainHeaderOptionTypeVisitor = 22, QXMainHeaderOptionTypeVisitor = 22,
/// 好友
QXMainHeaderOptionTypeFriend = 23,
/// 充值
QXMainHeaderOptionTypeRecharge = 30,
/// 商城
QXMainHeaderOptionTypeShop = 31,
/// 公会
QXMainHeaderOptionTypeGuild = 32,
/// 挚友
QXMainHeaderOptionTypeFriend = 33,
/// 房间
QXMainHeaderOptionTypeRoom = 34,
/// 钱包
QXMainHeaderOptionTypeWallet = 35,
/// 礼物墙
QXMainHeaderOptionTypeGiftWall = 36,
}QXMainHeaderOptionType; }QXMainHeaderOptionType;
@protocol QXMainHeaderViewDelegate <NSObject> @protocol QXMainHeaderViewDelegate <NSObject>
@@ -50,6 +55,10 @@ typedef NS_ENUM(NSInteger) {
@interface QXMainHeaderView : UIView @interface QXMainHeaderView : UIView
@property (nonatomic,weak)id<QXMainHeaderViewDelegate>delegate; @property (nonatomic,weak)id<QXMainHeaderViewDelegate>delegate;
@property (nonatomic,strong)QXUserModel *userModel; @property (nonatomic,strong)QXUserModel *userModel;
@property (nonatomic,strong)NSString *earnings;
@property (nonatomic,strong)NSString *coin;
-(void)reloadData;
-(CGFloat)getHeight;
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

View File

@@ -8,27 +8,55 @@
#import "QXMainHeaderView.h" #import "QXMainHeaderView.h"
#import "QXSeatHeaderView.h" #import "QXSeatHeaderView.h"
#import "CKShimmerLabel.h" #import "CKShimmerLabel.h"
#import "QXMineHomeToolsCell.h"
#import "QXServiceModel.h"
#import <SDCycleScrollView/SDCycleScrollView.h>
@interface QXMainHeaderView() @interface QXMainHeaderView()<UICollectionViewDelegate,UICollectionViewDataSource,SDCycleScrollViewDelegate>
@property (nonatomic, strong) QXSeatHeaderView *userHeaderView; @property (nonatomic, strong) QXSeatHeaderView *userHeaderView;
@property (nonatomic, strong) UIImageView *sexImageView; @property (nonatomic, strong) UIImageView *sexImageView;
//@property (nonatomic, strong) UILabel *nameLabel; //@property (nonatomic, strong) UILabel *nameLabel;
@property (nonatomic, strong) CKShimmerLabel *nameLabel; @property (nonatomic, strong) CKShimmerLabel *nameLabel;
@property (nonatomic, strong) UILabel *idLabel; @property (nonatomic, strong) UILabel *idLabel;
@property (nonatomic, strong) UIButton *idCopyBtn; @property (nonatomic, strong) UIButton *idCopyBtn;
@property (nonatomic, strong) UIView *userTagView;
//
@property (nonatomic, strong) UIView *nobilityBgView;
@property (nonatomic, strong) UIImageView *nobilityImageView;
@property (nonatomic, strong) UIView *userHomeView; @property (nonatomic, strong) UIView *userHomeView;
@property (nonatomic, strong) UILabel *userHomeTitleLabel; @property (nonatomic, strong) UILabel *userNobilityTitleLabel;
@property (nonatomic, strong) UIImageView *userHomeImageView; @property (nonatomic, strong) UIImageView *userNobilityImageView;
@property (nonatomic, strong) UIButton *userHomeBtn; @property (nonatomic, strong) UIButton *userHomeBtn;
@property (nonatomic, strong) UIImageView *useCodeImageView; @property (nonatomic, strong) UIImageView *useCodeImageView;
//@property (nonatomic, strong) UIButton *leftBtn; ///
//@property (nonatomic, strong) UIButton *rightBtn; @property (nonatomic, strong) UIView *topBgView;
@property (nonatomic, strong) UICollectionView *collectionView;
@property (nonatomic, strong) UIButton *roomBtn; @property (nonatomic, strong) UIButton *roomBtn;
/// ///
@property (nonatomic, strong) NSMutableArray *iconArray; @property (nonatomic, strong) NSMutableArray *iconArray;
///
@property (nonatomic, strong) NSMutableArray *toolsArray;
@property (nonatomic, strong)QXServiceModel *rechargeModel;
@property (nonatomic, strong)SDCycleScrollView *cycleScrollView;
@property (nonatomic, strong)UIView *walletBgView;
@property (nonatomic, strong)UILabel *walletTitleLabel;
@property (nonatomic, strong)UIImageView *walletBgImageView;
@property (nonatomic, strong)UILabel *walletBottomLabel;
@property (nonatomic, strong)UILabel *walletMoneyLabel;
@property (nonatomic, strong)UIButton *walletBtn;
@property (nonatomic, strong)UIImageView *giftWallBgImageView;
@property (nonatomic, strong)UILabel *giftWallTitleLabel;
@property (nonatomic, strong)UIButton *giftWallBtn;
@end @end
@implementation QXMainHeaderView @implementation QXMainHeaderView
@@ -42,7 +70,7 @@
} }
-(void)initSubviews{ -(void)initSubviews{
MJWeakSelf MJWeakSelf
self.userHeaderView = [[QXSeatHeaderView alloc] initWithFrame:CGRectMake(16, 40, 68, 68)]; self.userHeaderView = [[QXSeatHeaderView alloc] initWithFrame:CGRectMake(16, 18, 76, 76)];
[self.userHeaderView addTapBlock:^(id _Nonnull obj) { [self.userHeaderView addTapBlock:^(id _Nonnull obj) {
if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didClickOptionType:)]) { if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didClickOptionType:)]) {
[weakSelf.delegate didClickOptionType:QXMainHeaderOptionTypeGotoHome]; [weakSelf.delegate didClickOptionType:QXMainHeaderOptionTypeGotoHome];
@@ -58,17 +86,17 @@
}]; }];
// self.nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.userHeaderView.right+6, self.userHeaderView.top, self.width-self.userHeaderView.right-16-6, 23)]; // self.nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.userHeaderView.right+6, self.userHeaderView.top, self.width-self.userHeaderView.right-16-6, 23)];
self.nameLabel = [[CKShimmerLabel alloc] initWithFrame:CGRectMake(self.userHeaderView.right+6, self.userHeaderView.top, self.width-self.userHeaderView.right-16-6, 23)]; self.nameLabel = [[CKShimmerLabel alloc] initWithFrame:CGRectMake(self.userHeaderView.right+6, self.userHeaderView.top+5, self.width-self.userHeaderView.right-16-6, 22)];
self.nameLabel.shimmerWidth = 20; self.nameLabel.shimmerWidth = 20;
self.nameLabel.shimmerRadius = 20; self.nameLabel.shimmerRadius = 20;
self.nameLabel.shimmerColor = [UIColor yellowColor]; self.nameLabel.shimmerColor = [UIColor yellowColor];
self.nameLabel.repeat = YES; self.nameLabel.repeat = YES;
self.nameLabel.textColor = QXConfig.textColor; self.nameLabel.textColor = RGB16A(0xffffff,0.85);
self.nameLabel.font = [UIFont boldSystemFontOfSize:18]; self.nameLabel.font = [UIFont boldSystemFontOfSize:18];
// [self.nameLabel startShimmer]; // [self.nameLabel startShimmer];
[self addSubview:self.nameLabel]; [self addSubview:self.nameLabel];
self.idLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.userHeaderView.right+6, self.nameLabel.bottom+5, 80, 17)]; self.idLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.userHeaderView.right+6, self.nameLabel.bottom+6, 80, 17)];
self.idLabel.textColor = RGB16(0x666666); self.idLabel.textColor = RGB16(0x666666);
self.idLabel.font = [UIFont systemFontOfSize:12]; self.idLabel.font = [UIFont systemFontOfSize:12];
self.idLabel.text = @"ID:"; self.idLabel.text = @"ID:";
@@ -86,7 +114,7 @@
[self addSubview:self.idCopyBtn]; [self addSubview:self.idCopyBtn];
self.userHomeView = [[UIView alloc] initWithFrame:CGRectMake(SCREEN_WIDTH-60-16, 0, 60, 23)]; self.userHomeView = [[UIView alloc] initWithFrame:CGRectMake(SCREEN_WIDTH-60-16, 0, 54, 23)];
self.userHomeView.layer.cornerRadius = self.userHomeView.height/2.0; self.userHomeView.layer.cornerRadius = self.userHomeView.height/2.0;
self.userHomeView.layer.shadowColor = [UIColor grayColor].CGColor; self.userHomeView.layer.shadowColor = [UIColor grayColor].CGColor;
self.userHomeView.layer.shadowOpacity = 0.3; self.userHomeView.layer.shadowOpacity = 0.3;
@@ -98,20 +126,10 @@
self.userHomeView.backgroundColor = [UIColor whiteColor]; self.userHomeView.backgroundColor = [UIColor whiteColor];
[self addSubview:self.userHomeView]; [self addSubview:self.userHomeView];
self.userHomeImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowRight"]];
self.userHomeImageView.frame = CGRectMake(self.userHomeView.width-10-16, (23-16)/2.0, 16, 16);
[self.userHomeView addSubview:self.userHomeImageView];
self.userHomeTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 20, 20)];
self.userHomeTitleLabel.text = QXText(@"编辑");
self.userHomeTitleLabel.font = [UIFont systemFontOfSize:12];
self.userHomeTitleLabel.textColor = [UIColor colorWithHexString:@"#333333"];
[self.userHomeTitleLabel sizeToFit];
self.userHomeTitleLabel.x = 10;
self.userHomeTitleLabel.y =( self.userHomeView.height - self.userHomeTitleLabel.height)/2.0;
[self.userHomeView addSubview:self.userHomeTitleLabel];
self.userHomeBtn = [[UIButton alloc] initWithFrame:self.userHomeView.bounds]; self.userHomeBtn = [[UIButton alloc] initWithFrame:self.userHomeView.bounds];
[self.userHomeBtn setBackgroundImage:[UIImage imageNamed:@"mine_edit_btn"] forState:(UIControlStateNormal)];
[self.userHomeBtn addTarget:self action:@selector(gotoUserHomePageClick) forControlEvents:(UIControlEventTouchUpInside)]; [self.userHomeBtn addTarget:self action:@selector(gotoUserHomePageClick) forControlEvents:(UIControlEventTouchUpInside)];
[self.userHomeView addSubview:self.userHomeBtn]; [self.userHomeView addSubview:self.userHomeBtn];
@@ -122,73 +140,191 @@
NSArray* nameArr = @[ NSArray* nameArr = @[
QXText(@"关注"), QXText(@"粉丝"),QXText(@"访客") QXText(@"关注"), QXText(@"粉丝"),QXText(@"访客")
]; ];
CGFloat width = (SCREEN_WIDTH-32)/4; CGFloat width = (SCREEN_WIDTH-60)/3;
for (int i = 0; i < nameArr.count; i ++) { for (int i = 0; i < nameArr.count; i ++) {
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(16+width*i, self.userHeaderView.bottom+19, width, 22)]; UILabel *countLabel = [[UILabel alloc] initWithFrame:CGRectMake(30+width*i, self.userHeaderView.bottom+25, width, 25)];
titleLabel.textColor = RGB16(0x666666); countLabel.textAlignment = NSTextAlignmentCenter;
countLabel.textColor = RGB16(0xCCCDC8);
countLabel.tag = 10 + i;
countLabel.font = [UIFont fontWithName:@"DIN Condensed" size:22];
countLabel.text = @"0";
[self addSubview:countLabel];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(countLabel.left, countLabel.bottom+5, width, 18)];
titleLabel.textColor = RGB16(0XCCCDC8);
titleLabel.font = [UIFont systemFontOfSize:12]; titleLabel.font = [UIFont systemFontOfSize:12];
titleLabel.textAlignment = NSTextAlignmentCenter; titleLabel.textAlignment = NSTextAlignmentCenter;
titleLabel.text = nameArr[i]; titleLabel.text = nameArr[i];
[titleLabel sizeToFit];
titleLabel.x = 16+width*i;
titleLabel.y = self.userHeaderView.bottom+16;
titleLabel.height = 22;
[self addSubview:titleLabel]; [self addSubview:titleLabel];
UILabel *countLabel = [[UILabel alloc] initWithFrame:CGRectMake(titleLabel.right+5, titleLabel.top, width-10-titleLabel.width, 22)];
countLabel.textAlignment = NSTextAlignmentCenter;
countLabel.textColor = QXConfig.textColor;
countLabel.tag = 10 + i;
countLabel.font = [UIFont boldSystemFontOfSize:16];
countLabel.text = @"0";
countLabel.centerY = titleLabel.centerY;
[self addSubview:countLabel];
UIControl *c = [[UIControl alloc] initWithFrame:CGRectMake(titleLabel.left, titleLabel.top-10, width, titleLabel.height+20)];
UIControl *c = [[UIControl alloc] initWithFrame:CGRectMake(countLabel.left, countLabel.top, width, countLabel.height+titleLabel.height+5)];
c.tag = 20 + i; c.tag = 20 + i;
[c addTarget:self action:@selector(viewClick:) forControlEvents:UIControlEventTouchUpInside]; [c addTarget:self action:@selector(viewClick:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:c]; [self addSubview:c];
} }
// self.leftBtn = [[UIButton alloc] initWithFrame:CGRectMake(16, self.userHeaderView.bottom+54, width*2-7.5, 67)];
// [self.leftBtn setBackgroundImage:[UIImage imageNamed:@"start_live"] forState:(UIControlStateNormal)];
// [self.leftBtn addTarget:self action:@selector(leftAction) forControlEvents:(UIControlEventTouchUpInside)];
// [self addSubview:self.leftBtn];
//
// self.rightBtn = [[UIButton alloc] initWithFrame:CGRectMake(self.leftBtn.right+7.5, self.userHeaderView.bottom+54, self.leftBtn.width, 67)];
// [self.rightBtn setBackgroundImage:[UIImage imageNamed:@"become_anchor"] forState:(UIControlStateNormal)];
// [self.rightBtn addTarget:self action:@selector(rightAction) forControlEvents:(UIControlEventTouchUpInside)];
// [self addSubview:self.rightBtn];
self.roomBtn = [[UIButton alloc] initWithFrame:CGRectMake(16, self.userHeaderView.bottom+54, self.width-32, ScaleWidth(67))]; self.nobilityBgView = [[UIView alloc] initWithFrame:CGRectMake(30, self.userHeaderView.bottom+95, SCREEN_WIDTH-60, ScaleWidth(40))];
[self.roomBtn setBackgroundImage:[UIImage imageNamed:@"mine_header_room"] forState:(UIControlStateNormal)]; [self.nobilityBgView addTapBlock:^(id _Nonnull obj) {
[self.roomBtn addTarget:self action:@selector(roomAction) forControlEvents:(UIControlEventTouchUpInside)]; if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didClickOptionType:)]) {
[self addSubview:self.roomBtn]; [weakSelf.delegate didClickOptionType:QXMainHeaderOptionTypeNobility];
}
}];
[self addSubview:self.nobilityBgView];
self.nobilityImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mine_nobility_bg"]];
self.nobilityImageView.frame = self.nobilityBgView.bounds;
self.nobilityImageView.contentMode = UIViewContentModeScaleToFill;
[self.nobilityBgView addSubview:self.nobilityImageView];
self.userNobilityImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"arrowRight"] imageByTintColor:RGB16(0xEECE72)]];
self.userNobilityImageView.frame = CGRectMake(self.nobilityImageView.width-10-16, (self.nobilityBgView.height-16)/2.0, 16, 16);
[self.nobilityBgView addSubview:self.userNobilityImageView];
self.userNobilityTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.userNobilityImageView.left-32, (self.nobilityBgView.height-20)/2, 32, 20)];
self.userNobilityTitleLabel.text = QXText(@"更多");
self.userNobilityTitleLabel.font = [UIFont systemFontOfSize:14];
self.userNobilityTitleLabel.textColor = [UIColor colorWithHexString:@"#EECE72"];
[self.nobilityBgView addSubview:self.userNobilityTitleLabel];
self.topBgView = [[UIView alloc] initWithFrame:CGRectMake(16, self.nobilityBgView.bottom, SCREEN_WIDTH-32, 90)];
[self.topBgView addRoundedCornersWithRadius:8];
self.topBgView.backgroundColor = RGB16A(0xffffff, 0.06);
[self addSubview:self.topBgView];
NSInteger maxCount = 5;
CGFloat btnWith = (int)(SCREEN_WIDTH-32-1)/maxCount;
CGFloat btnHeight = self.topBgView.height;
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.itemSize = CGSizeMake(btnWith, btnHeight);
layout.minimumLineSpacing = 0;
layout.minimumInteritemSpacing = 0;
layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
[self.collectionView registerNib:[UINib nibWithNibName:@"QXMineHomeToolsCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXMineHomeToolsCell"];
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
self.collectionView.showsHorizontalScrollIndicator = NO;
self.collectionView.bounces = NO;
self.collectionView.backgroundColor = UIColor.clearColor;
[self.topBgView addSubview:self.collectionView];
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.bottom.right.equalTo(self.topBgView);
}];
self.cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(self.topBgView.left, self.topBgView.bottom+12, self.topBgView.width, 64) delegate:self placeholderImage:nil];
self.cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill;
[self.cycleScrollView addRoundedCornersWithRadius:8];
[self addSubview:self.cycleScrollView];
self.walletBgView = [[UIView alloc] initWithFrame:CGRectMake(self.topBgView.left, self.cycleScrollView.bottom+12, self.topBgView.width, 108)];
self.walletBgView.backgroundColor = RGB16(0x231F2C);
[self.walletBgView addRoundedCornersWithRadius:8];
[self addSubview:self.walletBgView];
self.walletTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(16, 12, 200, 16)];
self.walletTitleLabel.text = @"我的钱包";
self.walletTitleLabel.font = [UIFont systemFontOfSize:14];
self.walletTitleLabel.textColor = RGB16(0x929196);
[self.walletBgView addSubview:self.walletTitleLabel];
CGFloat walletWidth = (self.topBgView.width - 16*3) / 2;
self.walletBgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.topBgView.left, self.walletTitleLabel.bottom+8, walletWidth, 60)];
self.walletBgImageView.backgroundColor = RGB16(0xFFE38E);
[self.walletBgImageView addRoundedCornersWithRadius:8];
[self.walletBgView addSubview:self.walletBgImageView];
self.walletBottomLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.walletBgImageView.left, self.walletBgImageView.bottom-14-11, walletWidth, 14)];
self.walletBottomLabel.text = @"钱包";
self.walletBottomLabel.textAlignment = NSTextAlignmentCenter;
self.walletBottomLabel.font = [UIFont systemFontOfSize:12];
self.walletBottomLabel.textColor = RGB16(0x333333);
[self.walletBgView addSubview:self.walletBottomLabel];
self.walletMoneyLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.walletBgImageView.left, self.walletBgImageView.top+11, walletWidth, 25)];
self.walletMoneyLabel.text = @"0";
self.walletMoneyLabel.textAlignment = NSTextAlignmentCenter;
self.walletMoneyLabel.font = [UIFont fontWithName:@"DIN Condensed" size:25];
self.walletMoneyLabel.textColor = RGB16(0x222222);
[self.walletBgView addSubview:self.walletMoneyLabel];
self.giftWallBgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.walletBgImageView.right+16, self.walletBgImageView.top, walletWidth, self.walletBgImageView.height)];
self.giftWallBgImageView.backgroundColor = RGB16(0xF1B3FF);
[self.giftWallBgImageView addRoundedCornersWithRadius:8];
[self.walletBgView addSubview:self.giftWallBgImageView];
self.giftWallTitleLabel = [[UILabel alloc] initWithFrame:self.giftWallBgImageView.frame];
self.giftWallTitleLabel.text = @"礼物墙";
self.giftWallTitleLabel.textAlignment = NSTextAlignmentCenter;
self.giftWallTitleLabel.font = [UIFont fontWithName:@"DIN Condensed" size:20];
self.giftWallTitleLabel.textColor = RGB16(0x222222);
[self.walletBgView addSubview:self.giftWallTitleLabel];
self.walletBtn = [[UIButton alloc] initWithFrame:self.walletBgImageView.frame];
[self.walletBtn addTarget:self action:@selector(walletAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.walletBgView addSubview:self.walletBtn];
self.giftWallBtn = [[UIButton alloc] initWithFrame:self.giftWallBgImageView.frame];
[self.giftWallBtn addTarget:self action:@selector(giftWalltAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.walletBgView addSubview:self.giftWallBtn];
} }
-(CGFloat)getHeight{
return self.walletBgView.bottom+6;
}
-(void)setCoin:(NSString *)coin{
_coin = coin;
self.walletMoneyLabel.text = [NSString stringWithFormat:@"%.2f",coin.doubleValue];
}
-(void)reloadData{
if ([self.toolsArray containsObject:self.rechargeModel]) {
return;
}
if (QXGlobal.shareGlobal.isOpenRecharge) {
[self.toolsArray insertObject:self.rechargeModel atIndex:0];
}
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return self.toolsArray.count;
}
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
QXMineHomeToolsCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXMineHomeToolsCell" forIndexPath:indexPath];
cell.model = self.toolsArray[indexPath.row];
return cell;
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) {
QXServiceModel *model = self.toolsArray[indexPath.row];
[self.delegate didClickOptionType:model.type];
}
}
-(void)viewClick:(UIControl*)sender{ -(void)viewClick:(UIControl*)sender{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) { if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) {
[self.delegate didClickOptionType:sender.tag]; [self.delegate didClickOptionType:sender.tag];
} }
} }
-(void)roomAction{
-(void)walletAction{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) { if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) {
[self.delegate didClickOptionType:QXMainHeaderOptionTypeRoom]; [self.delegate didClickOptionType:QXMainHeaderOptionTypeWallet];
}
}
-(void)giftWalltAction{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) {
[self.delegate didClickOptionType:QXMainHeaderOptionTypeGiftWall];
} }
} }
-(void)leftAction{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) {
[self.delegate didClickOptionType:QXMainHeaderOptionTypeStartLive];
}
}
-(void)rightAction{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) {
[self.delegate didClickOptionType:QXMainHeaderOptionTypeRealName];
}
}
-(void)gotoUserHomePageClick{ -(void)gotoUserHomePageClick{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) { if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) {
[self.delegate didClickOptionType:QXMainHeaderOptionTypeGotoEdit]; [self.delegate didClickOptionType:QXMainHeaderOptionTypeGotoEdit];
@@ -210,7 +346,7 @@
} }
for (int i = 0;i<userModel.icon.count;i++) { for (int i = 0;i<userModel.icon.count;i++) {
NSString*icon = userModel.icon[i]; NSString*icon = userModel.icon[i];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.nameLabel.left+i*UserIconWidth, self.idLabel.bottom+5, UserIconWidth, UserIconHeight)]; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.nameLabel.left+i*UserIconWidth, self.userHeaderView.bottom-5-UserIconHeight, UserIconWidth, UserIconHeight)];
[imageView sd_setImageWithURL:[NSURL URLWithString:icon]]; [imageView sd_setImageWithURL:[NSURL URLWithString:icon]];
[self addSubview:imageView]; [self addSubview:imageView];
[self.iconArray addObject:imageView]; [self.iconArray addObject:imageView];
@@ -239,4 +375,44 @@
} }
return _iconArray; return _iconArray;
} }
-(NSMutableArray *)toolsArray{
if (!_toolsArray) {
QXServiceModel *md2 = [[QXServiceModel alloc] init];
md2.title = @"商城";
md2.icon = @"mine_tools_shop";
md2.type = QXMainHeaderOptionTypeShop;
QXServiceModel *md3 = [[QXServiceModel alloc] init];
md3.title = @"公会";
md3.icon = @"mine_tools_guild";
md3.type = QXMainHeaderOptionTypeGuild;
QXServiceModel *md4 = [[QXServiceModel alloc] init];
md4.title = @"挚友";
md4.icon = @"mine_tools_friend";
md4.type = QXMainHeaderOptionTypeFriend;
QXServiceModel *md5 = [[QXServiceModel alloc] init];
md5.title = @"房间";
md5.icon = @"mine_tools_room";
md5.type = QXMainHeaderOptionTypeRoom;
_toolsArray = [NSMutableArray arrayWithArray:@[
md2,
md3,
md4,
md5
]];
}
return _toolsArray;
}
-(QXServiceModel *)rechargeModel{
if (!_rechargeModel) {
_rechargeModel = [[QXServiceModel alloc] init];
_rechargeModel.title = @"充值";
_rechargeModel.icon = @"mine_tools_recharge";
_rechargeModel.type = QXMainHeaderOptionTypeRecharge;
}
return _rechargeModel;
}
@end @end

View File

@@ -0,0 +1,18 @@
//
// QXMineHomeToolsCell.h
// QXLive
//
// Created by 启星 on 2025/11/4.
//
#import <UIKit/UIKit.h>
#import "QXServiceModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface QXMineHomeToolsCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (nonatomic,strong)QXServiceModel *model;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,22 @@
//
// QXMineHomeToolsCell.m
// QXLive
//
// Created by on 2025/11/4.
//
#import "QXMineHomeToolsCell.h"
@implementation QXMineHomeToolsCell
-(void)setModel:(QXServiceModel *)model{
_model = model;
self.titleLabel.text = model.title;
self.imageView.image = [UIImage imageNamed:model.icon];
}
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
self.backgroundColor = UIColor.clearColor;
}
@end

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="QXMineHomeToolsCell">
<rect key="frame" x="0.0" y="0.0" width="155" height="198"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="155" height="198"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="CQb-0X-F8A">
<rect key="frame" x="16" y="37" width="123" height="123"/>
<constraints>
<constraint firstAttribute="width" secondItem="CQb-0X-F8A" secondAttribute="height" multiplier="1:1" id="GDf-KK-Dnb"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A50-91-O1H">
<rect key="frame" x="0.0" y="168" width="155" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="N0k-9B-NpF"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.80000000000000004" green="0.80392156862745101" blue="0.78431372549019607" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</view>
<viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
<constraints>
<constraint firstItem="CQb-0X-F8A" firstAttribute="centerY" secondItem="SEy-5g-ep8" secondAttribute="centerY" constant="-13" id="Ero-Oq-fFS"/>
<constraint firstItem="A50-91-O1H" firstAttribute="top" secondItem="CQb-0X-F8A" secondAttribute="bottom" constant="8" id="PYh-qS-bcb"/>
<constraint firstAttribute="trailing" secondItem="CQb-0X-F8A" secondAttribute="trailing" constant="16" id="Po4-xa-acz"/>
<constraint firstItem="CQb-0X-F8A" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="16" id="bRx-en-KEu"/>
<constraint firstItem="A50-91-O1H" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="dHq-Z7-bcZ"/>
<constraint firstAttribute="trailing" secondItem="A50-91-O1H" secondAttribute="trailing" id="wIU-OJ-aKL"/>
</constraints>
<size key="customSize" width="155" height="300"/>
<connections>
<outlet property="imageView" destination="CQb-0X-F8A" id="zur-ed-KGg"/>
<outlet property="titleLabel" destination="A50-91-O1H" id="3K4-UR-37b"/>
</connections>
<point key="canvasLocation" x="219.08396946564883" y="107.74647887323944"/>
</collectionViewCell>
</objects>
</document>

View File

@@ -6,17 +6,37 @@
// //
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "QXServiceModel.h"
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger) {
/// 等级
QXMineServiceTypeLevel = 40,
/// 个性装扮
QXMineServiceTypeDress = 41,
/// 我的背包
QXMineServiceTypeBackpack = 42,
/// 设置
QXMineServiceTypeSetting = 43,
/// 帮助中心
QXMineServiceTypeHelp = 44,
/// 邀请
QXMineServiceTypeInvite = 45,
/// 每日任务
QXMineServiceTypeDayTask = 46,
/// 意见反馈
QXMineServiceTypeReport = 47,
/// 个税客服
QXMineServiceTypeCustomerService = 48,
}QXMineServiceType;
@protocol QXMineServiceCellDelegate <NSObject> @protocol QXMineServiceCellDelegate <NSObject>
@optional @optional
-(void)didClickServiceWithBtn:(UIButton*)button title:(NSString*)title; -(void)didClickServiceWithType:(QXMineServiceType)type;
@end @end
@interface QXMineServiceCell : UITableViewCell @interface QXMineServiceCell : UITableViewCell
@property (nonatomic,weak)id<QXMineServiceCellDelegate>delegate; @property (nonatomic,weak)id<QXMineServiceCellDelegate>delegate;
-(void)cellReload; @property (nonatomic,assign)BOOL isMore;
+(instancetype)cellWithTableView:(UITableView *)tableView; +(instancetype)cellWithTableView:(UITableView *)tableView;
@end @end
@@ -24,7 +44,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)UIImageView *imageView; @property (nonatomic,strong)UIImageView *imageView;
@property (nonatomic,strong)UILabel *titleLabel; @property (nonatomic,strong)UILabel *titleLabel;
@property (nonatomic,strong)QXServiceModel *model;
@end @end

View File

@@ -6,13 +6,15 @@
// //
#import "QXMineServiceCell.h" #import "QXMineServiceCell.h"
@class QXMineServiceSubCell; @class QXMineServiceSubCell;
@interface QXMineServiceCell()<UICollectionViewDelegate,UICollectionViewDataSource> @interface QXMineServiceCell()<UICollectionViewDelegate,UICollectionViewDataSource>
@property (nonatomic,strong)UIView *bgView; @property (nonatomic,strong)UIView *bgView;
@property (nonatomic,strong)UILabel *titleLabel; @property (nonatomic,strong)UILabel *titleLabel;
@property (nonatomic,strong)UICollectionView *collectionView; @property (nonatomic,strong)UICollectionView *collectionView;
@property (nonatomic,strong)NSMutableArray *serviceArray; @property (nonatomic,strong)NSMutableArray *serviceArray;
@property (nonatomic,strong)NSMutableArray *serviceImageArray; @property (nonatomic,strong)NSMutableArray *moreArray;
@property (nonatomic,strong)QXServiceModel *inviteModel;
@end @end
@implementation QXMineServiceCell @implementation QXMineServiceCell
@@ -34,24 +36,25 @@
} }
-(void)createViews{ -(void)createViews{
self.bgView = [[UIView alloc] init]; self.bgView = [[UIView alloc] init];
self.bgView.backgroundColor = [UIColor whiteColor]; self.bgView.backgroundColor = RGB16(0x231F2C);
[self.bgView addRoundedCornersWithRadius:10]; [self.bgView addRoundedCornersWithRadius:10];
[self.contentView addSubview:self.bgView]; [self.contentView addSubview:self.bgView];
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(16); make.left.mas_equalTo(16);
make.right.mas_equalTo(-16); make.right.mas_equalTo(-16);
make.top.bottom.equalTo(self); make.top.mas_equalTo(6);
make.bottom.mas_equalTo(-6);
}]; }];
self.titleLabel = [[UILabel alloc] init]; self.titleLabel = [[UILabel alloc] init];
self.titleLabel.font = [UIFont boldSystemFontOfSize:16]; self.titleLabel.font = [UIFont boldSystemFontOfSize:14];
self.titleLabel.textColor = QXConfig.textColor; self.titleLabel.textColor = RGB16(0x929196);
self.titleLabel.text = QXText(@"更多服务"); self.titleLabel.text = QXText(@"更多服务");
[self.bgView addSubview:self.titleLabel];; [self.bgView addSubview:self.titleLabel];;
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.left.mas_equalTo(12); make.top.left.mas_equalTo(12);
make.right.mas_equalTo(-12); make.right.mas_equalTo(-12);
make.height.mas_equalTo(24); make.height.mas_equalTo(16);
}]; }];
@@ -69,14 +72,13 @@
self.collectionView.delegate = self; self.collectionView.delegate = self;
self.collectionView.dataSource = self; self.collectionView.dataSource = self;
self.collectionView.showsHorizontalScrollIndicator = NO; self.collectionView.showsHorizontalScrollIndicator = NO;
self.collectionView.bounces = NO; self.collectionView.scrollEnabled = NO;
self.collectionView.backgroundColor = UIColor.clearColor; self.collectionView.backgroundColor = UIColor.clearColor;
[self.bgView addSubview:self.collectionView]; [self.bgView addSubview:self.collectionView];
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self.bgView); make.left.right.equalTo(self.bgView);
make.top.equalTo(self.titleLabel.mas_bottom).offset(22); make.top.equalTo(self.titleLabel.mas_bottom).offset(12);
make.height.mas_equalTo(btnHeight*2+10); make.bottom.mas_equalTo(-12);
// make.right.mas_equalTo(-12);
}]; }];
@@ -101,23 +103,32 @@
// //
// } // }
} }
-(void)serviceClick:(UIButton*)sender{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickServiceWithBtn:title:)]) { -(void)setIsMore:(BOOL)isMore{
[self.delegate didClickServiceWithBtn:sender title:sender.titleLabel.text]; _isMore = isMore;
self.titleLabel.text = isMore?@"更多":@"常用服务";
if (isMore) {
if ([self.moreArray containsObject:self.inviteModel]) {
return;
}
if (QXGlobal.shareGlobal.isOpenRecharge) {
[self.moreArray insertObject:self.inviteModel atIndex:1];
}
} }
} }
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return self.serviceArray.count; return self.isMore?self.moreArray.count:self.serviceArray.count;
} }
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ -(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
QXMineServiceSubCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXMineServiceSubCell" forIndexPath:indexPath]; QXMineServiceSubCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXMineServiceSubCell" forIndexPath:indexPath];
cell.imageView.image = [UIImage imageNamed:self.serviceImageArray[indexPath.row]]; QXServiceModel *model = self.isMore?self.moreArray[indexPath.row]:self.serviceArray[indexPath.row];
cell.titleLabel.text = self.serviceArray[indexPath.row]; cell.model = model;
return cell; return cell;
} }
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickServiceWithBtn:title:)]) { if (self.delegate && [self.delegate respondsToSelector:@selector(didClickServiceWithType:)]) {
[self.delegate didClickServiceWithBtn:nil title:self.serviceArray[indexPath.row]]; QXServiceModel *model = self.isMore?self.moreArray[indexPath.row]:self.serviceArray[indexPath.row];
[self.delegate didClickServiceWithType:model.type];
} }
} }
@@ -133,32 +144,76 @@
} }
-(NSMutableArray *)serviceArray{ -(NSMutableArray *)serviceArray{
if (!_serviceArray) { if (!_serviceArray) {
QXServiceModel *md1 = [[QXServiceModel alloc] init];
md1.title = @"等级";
md1.icon = @"service_level";
md1.type = QXMineServiceTypeLevel;
QXServiceModel *md2 = [[QXServiceModel alloc] init];
md2.title = @"个性装扮";
md2.icon = @"service_dress";
md2.type = QXMineServiceTypeDress;
QXServiceModel *md3 = [[QXServiceModel alloc] init];
md3.title = @"我的背包";
md3.icon = @"service_bag";
md3.type = QXMineServiceTypeBackpack;
QXServiceModel *md4 = [[QXServiceModel alloc] init];
md4.title = @"设置";
md4.icon = @"service_setting";
md4.type = QXMineServiceTypeSetting;
_serviceArray = [NSMutableArray arrayWithArray:@[ _serviceArray = [NSMutableArray arrayWithArray:@[
QXText(@"钱包"), md1,
QXText(@"段位"), md2,
QXText(@"公会中心"), md3,
QXText(@"个性装扮"), md4,
QXText(@"道具商城"),
QXText(@"我的背包"),
QXText(@"每日任务")
]]; ]];
} }
return _serviceArray; return _serviceArray;
} }
-(NSMutableArray *)serviceImageArray{ -(NSMutableArray *)moreArray{
if (!_serviceImageArray) { if (!_moreArray) {
_serviceImageArray = [NSMutableArray arrayWithArray:@[ QXServiceModel *md1 = [[QXServiceModel alloc] init];
@"service_wallet", md1.title = @"帮助中心";
@"service_level", md1.icon = @"service_help";
@"service_guild", md1.type = QXMineServiceTypeHelp;
@"service_dress",
@"service_shop", QXServiceModel *md2 = [[QXServiceModel alloc] init];
@"service_bag", md2.title = @"每日任务";
@"service_task" md2.icon = @"service_task";
md2.type = QXMineServiceTypeDayTask;
QXServiceModel *md3 = [[QXServiceModel alloc] init];
md3.title = @"意见反馈";
md3.icon = @"service_bag";
md3.type = QXMineServiceTypeReport;
QXServiceModel *md4 = [[QXServiceModel alloc] init];
md4.title = @"个税客服";
md4.icon = @"service_customer_service";
md4.type = QXMineServiceTypeCustomerService;
_moreArray = [NSMutableArray arrayWithArray:@[
md1,
md2,
md3,
md4,
]]; ]];
} }
return _serviceImageArray; return _moreArray;
}
-(QXServiceModel *)inviteModel{
if (!_inviteModel) {
_inviteModel = [[QXServiceModel alloc] init];
_inviteModel.title = @"邀请";
_inviteModel.icon = @"service_invite";
_inviteModel.type = QXMineServiceTypeInvite;
}
return _inviteModel;
} }
- (void)awakeFromNib { - (void)awakeFromNib {
[super awakeFromNib]; [super awakeFromNib];
@@ -184,17 +239,22 @@
} }
return self; return self;
} }
-(void)setModel:(QXServiceModel *)model{
_model = model;
self.imageView.image = [UIImage imageNamed:model.icon];
self.titleLabel.text = model.title;
}
-(void)initSubviews{ -(void)initSubviews{
UIImageView *imageView = [[UIImageView alloc] init]; UIImageView *imageView = [[UIImageView alloc] init];
[self.contentView addSubview:imageView]; [self.contentView addSubview:imageView];
self.imageView = imageView; self.imageView = imageView;
[imageView mas_makeConstraints:^(MASConstraintMaker *make) { [imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.centerX.equalTo(self.contentView); make.top.centerX.equalTo(self.contentView);
make.height.width.mas_equalTo(18); make.height.width.mas_equalTo(ScaleWidth(24));
}]; }];
UILabel *titleLabel = [[UILabel alloc] init]; UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.textColor = QXConfig.textColor; titleLabel.textColor = RGB16(0x929196);
titleLabel.font = [UIFont systemFontOfSize:12]; titleLabel.font = [UIFont systemFontOfSize:12];
[self.contentView addSubview:titleLabel]; [self.contentView addSubview:titleLabel];
self.titleLabel = titleLabel; self.titleLabel = titleLabel;

View File

@@ -0,0 +1,27 @@
//
// QXMineGiftWallCell.h
// QXLive
//
// Created by 启星 on 2025/11/5.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface QXMineGiftWallCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIImageView *bgImageView;
@property (weak, nonatomic) IBOutlet UILabel *countLabel;
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (weak, nonatomic) IBOutlet UIImageView *giftImageView;
@property (weak, nonatomic) IBOutlet UIImageView *userImageView1;
@property (weak, nonatomic) IBOutlet UIImageView *userImageView2;
@property (weak, nonatomic) IBOutlet UIImageView *userImageView3;
@property (weak, nonatomic) IBOutlet UILabel *userCountLabel;
@property (weak, nonatomic) IBOutlet UIButton *giftCoinBtn;
@property (nonatomic,assign)BOOL isLight;
@property (nonatomic,strong)QXUserGiftWallModel *model;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,106 @@
//
// QXMineGiftWallCell.m
// QXLive
//
// Created by on 2025/11/5.
//
#import "QXMineGiftWallCell.h"
#import <CoreImage/CoreImage.h>
@implementation QXMineGiftWallCell
-(void)setIsLight:(BOOL)isLight{
_isLight = isLight;
self.bgImageView.image = [UIImage imageNamed:isLight?@"user_giftwall_light":@"user_giftwall_gray"];
// if (isLight) {
// self.userCountLabel.hidden = NO;
// }else{
// self.userCountLabel.hidden = YES;
// self.userImageView1.hidden = YES;
// self.userImageView2.hidden = YES;
// self.userImageView3.hidden = YES;
// }
}
- (UIImage *)convertImageToGrayWithCoreImage:(UIImage *)inputImage {
CIImage *ciImage = [[CIImage alloc] initWithImage:inputImage];
// 使
CIFilter *grayFilter = [CIFilter filterWithName:@"CIColorControls"];
[grayFilter setValue:ciImage forKey:kCIInputImageKey];
[grayFilter setValue:@(0.0) forKey:kCIInputSaturationKey]; // 0
CIImage *outputImage = [grayFilter valueForKey:kCIOutputImageKey];
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *grayImage = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
return grayImage;
}
-(void)setModel:(QXUserGiftWallModel *)model{
_model = model;
self.countLabel.text = [NSString stringWithFormat:@"共计%@个",model.total_count];
[self.giftImageView sd_setImageWithURL:[NSURL URLWithString:model.base_image] placeholderImage:nil completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
if (!self.isLight) {
image = [self convertImageToGrayWithCoreImage:image];
}
self.giftImageView.image = image;
}];
self.nameLabel.text = model.gift_name;
[self.giftCoinBtn setTitle:[NSString stringWithFormat:@" %@",model.gift_price] forState:(UIControlStateNormal)];
self.userCountLabel.text = [NSString stringWithFormat:@"等%@人",model.top_users_count];
if (model.top_users.count > 0) {
self.countLabel.hidden = NO;
self.userCountLabel.hidden = NO;
QXUserHomeModel *md1;
QXUserHomeModel *md2;
QXUserHomeModel *md3;
if (model.top_users.count >= 3){
self.userImageView1.hidden = NO;
self.userImageView2.hidden = NO;
self.userImageView3.hidden = NO;
md1 = model.top_users[0];
md2 = model.top_users[1];
md3 = model.top_users[2];
[self.userImageView1 sd_setImageWithURL:[NSURL URLWithString:md1.avatar]];
[self.userImageView2 sd_setImageWithURL:[NSURL URLWithString:md2.avatar]];
[self.userImageView3 sd_setImageWithURL:[NSURL URLWithString:md3.avatar]];
return;
}else if (model.top_users.count == 2){
self.userImageView1.hidden = NO;
self.userImageView2.hidden = NO;
self.userImageView3.hidden = YES;
md1 = model.top_users[0];
md2 = model.top_users[1];
[self.userImageView1 sd_setImageWithURL:[NSURL URLWithString:md1.avatar]];
[self.userImageView2 sd_setImageWithURL:[NSURL URLWithString:md2.avatar]];
return;
}else{
self.userImageView1.hidden = NO;
self.userImageView2.hidden = YES;
self.userImageView3.hidden = YES;
md1 = model.top_users[0];
[self.userImageView1 sd_setImageWithURL:[NSURL URLWithString:md1.avatar]];
}
}else{
self.countLabel.hidden = YES;
self.userCountLabel.hidden = YES;
self.userImageView1.hidden = YES;
self.userImageView2.hidden = YES;
self.userImageView3.hidden = YES;
}
}
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
@end

View File

@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="QXMineGiftWallCell">
<rect key="frame" x="0.0" y="0.0" width="168" height="236"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="168" height="236"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_giftwall_light" translatesAutoresizingMaskIntoConstraints="NO" id="7cD-Zp-duy">
<rect key="frame" x="0.0" y="0.0" width="168" height="236"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="lFd-KA-CIy">
<rect key="frame" x="22" y="17" width="124" height="124"/>
<constraints>
<constraint firstAttribute="width" secondItem="lFd-KA-CIy" secondAttribute="height" multiplier="1:1" id="7wf-ev-960"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="共计0个" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Gu5-Ab-anM">
<rect key="frame" x="119" y="6" width="39" height="11"/>
<constraints>
<constraint firstAttribute="height" constant="11" id="VFO-2d-XS3"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="10"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="荣耀冠军" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="C99-P7-2Qa">
<rect key="frame" x="5" y="143" width="158" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="flQ-Sl-76q"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="6dg-55-CAQ">
<rect key="frame" x="66" y="211" width="18" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="SU0-l9-dWa"/>
<constraint firstAttribute="width" constant="18" id="YcQ-Cd-n5d"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="9"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="mxk-cv-aBW">
<rect key="frame" x="54" y="211" width="18" height="18"/>
<constraints>
<constraint firstAttribute="width" constant="18" id="Kwg-ZJ-I5s"/>
<constraint firstAttribute="height" constant="18" id="xl5-Rc-fQg"/>
</constraints>
</imageView>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Rfn-Wi-s2Q">
<rect key="frame" x="42" y="211" width="18" height="18"/>
<constraints>
<constraint firstAttribute="width" constant="18" id="n8I-xi-ccY"/>
<constraint firstAttribute="height" constant="18" id="pmp-Ws-KWh"/>
</constraints>
</imageView>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="等12人" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5R5-ei-HVw">
<rect key="frame" x="90" y="214.66666666666666" width="70" height="11"/>
<constraints>
<constraint firstAttribute="height" constant="11" id="iAF-7r-aTF"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="10"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wfH-dA-6iW">
<rect key="frame" x="5" y="163" width="158" height="18"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="Nbj-v3-IdB"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title=" 666" image="mine_live_gift_corn">
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
</state>
</button>
</subviews>
</view>
<constraints>
<constraint firstItem="mxk-cv-aBW" firstAttribute="centerY" secondItem="6dg-55-CAQ" secondAttribute="centerY" id="64c-V4-gA0"/>
<constraint firstAttribute="trailing" secondItem="Gu5-Ab-anM" secondAttribute="trailing" constant="10" id="7T4-Ob-NXO"/>
<constraint firstItem="C99-P7-2Qa" firstAttribute="top" secondItem="lFd-KA-CIy" secondAttribute="bottom" constant="2" id="EDD-kB-qDv"/>
<constraint firstItem="lFd-KA-CIy" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="22" id="Fy1-9f-QQe"/>
<constraint firstItem="mxk-cv-aBW" firstAttribute="leading" secondItem="Rfn-Wi-s2Q" secondAttribute="trailing" constant="-6" id="GJa-tY-ixM"/>
<constraint firstAttribute="trailing" secondItem="C99-P7-2Qa" secondAttribute="trailing" constant="5" id="GMT-PY-7GW"/>
<constraint firstAttribute="trailing" secondItem="wfH-dA-6iW" secondAttribute="trailing" constant="5" id="Gfa-T9-bdP"/>
<constraint firstItem="wfH-dA-6iW" firstAttribute="top" secondItem="C99-P7-2Qa" secondAttribute="bottom" constant="2" id="H7F-rR-suC"/>
<constraint firstItem="6dg-55-CAQ" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" constant="-9" id="IEG-br-wSV"/>
<constraint firstAttribute="bottom" secondItem="6dg-55-CAQ" secondAttribute="bottom" constant="7" id="NPv-mt-kE9"/>
<constraint firstItem="Gu5-Ab-anM" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="6" id="NcQ-DB-e4d"/>
<constraint firstAttribute="bottom" secondItem="7cD-Zp-duy" secondAttribute="bottom" id="Oct-d8-K8j"/>
<constraint firstAttribute="trailing" secondItem="7cD-Zp-duy" secondAttribute="trailing" id="Qa8-XB-CzO"/>
<constraint firstItem="7cD-Zp-duy" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="YDV-W0-g0C"/>
<constraint firstAttribute="trailing" secondItem="lFd-KA-CIy" secondAttribute="trailing" constant="22" id="YOB-Ja-o1M"/>
<constraint firstItem="5R5-ei-HVw" firstAttribute="leading" secondItem="6dg-55-CAQ" secondAttribute="trailing" constant="6" id="Ylg-Ai-WXn"/>
<constraint firstItem="wfH-dA-6iW" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="5" id="bRU-wK-9Wa"/>
<constraint firstItem="C99-P7-2Qa" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="5" id="ccB-et-MDe"/>
<constraint firstItem="5R5-ei-HVw" firstAttribute="centerY" secondItem="6dg-55-CAQ" secondAttribute="centerY" id="fnx-YY-rbh"/>
<constraint firstItem="6dg-55-CAQ" firstAttribute="leading" secondItem="mxk-cv-aBW" secondAttribute="trailing" constant="-6" id="mXP-d3-zvO"/>
<constraint firstItem="7cD-Zp-duy" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="mZY-P3-rUD"/>
<constraint firstAttribute="trailing" secondItem="5R5-ei-HVw" secondAttribute="trailing" constant="8" id="t0r-L7-IXx"/>
<constraint firstItem="Rfn-Wi-s2Q" firstAttribute="centerY" secondItem="mxk-cv-aBW" secondAttribute="centerY" id="tKT-zK-45J"/>
<constraint firstItem="lFd-KA-CIy" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="17" id="tf1-7W-W8b"/>
</constraints>
<size key="customSize" width="168" height="236"/>
<connections>
<outlet property="bgImageView" destination="7cD-Zp-duy" id="Qws-Sx-zgv"/>
<outlet property="countLabel" destination="Gu5-Ab-anM" id="thX-Ow-8uq"/>
<outlet property="giftCoinBtn" destination="wfH-dA-6iW" id="0Pf-vR-YFG"/>
<outlet property="giftImageView" destination="lFd-KA-CIy" id="WHj-IT-1gB"/>
<outlet property="nameLabel" destination="C99-P7-2Qa" id="4Pi-Pd-bat"/>
<outlet property="userCountLabel" destination="5R5-ei-HVw" id="o6Z-tG-hWI"/>
<outlet property="userImageView1" destination="6dg-55-CAQ" id="Vuh-HH-6hU"/>
<outlet property="userImageView2" destination="mxk-cv-aBW" id="faK-sf-NvT"/>
<outlet property="userImageView3" destination="Rfn-Wi-s2Q" id="gBa-p4-JDT"/>
</connections>
<point key="canvasLocation" x="229.00763358778624" y="85.211267605633807"/>
</collectionViewCell>
</objects>
<resources>
<image name="mine_live_gift_corn" width="10" height="10"/>
<image name="user_giftwall_light" width="108" height="149"/>
</resources>
</document>

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Store@2x.png", "filename" : "mine_edit_btn@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Store@3x.png", "filename" : "mine_edit_btn@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Mask group@2x.png", "filename" : "mine_header_room@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Mask group@3x.png", "filename" : "mine_header_room@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_nobility_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_nobility_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Frame@2x.png", "filename" : "mine_redbag@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Frame@3x.png", "filename" : "mine_redbag@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Setting@2x.png", "filename" : "mine_setting@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Setting@3x.png", "filename" : "mine_setting@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_tools_friend@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_tools_friend@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_tools_guild@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_tools_guild@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_tools_recharge@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_tools_recharge@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_tools_room@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_tools_room@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "mine_tools_shop@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "mine_tools_shop@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Mask group@2x.png", "filename" : "mine_usercode_isLiang@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Mask group@3x.png", "filename" : "mine_usercode_isLiang@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Frame@2x.png", "filename" : "service_bag@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Frame@3x.png", "filename" : "service_bag@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_customer_service@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_customer_service@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Frame@2x.png", "filename" : "service_dress@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Frame@3x.png", "filename" : "service_dress@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Home@2x.png", "filename" : "service_help@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Home@3x.png", "filename" : "service_help@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Wallet@2x.png", "filename" : "service_invite@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Wallet@3x.png", "filename" : "service_invite@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Award, Trophy@2x.png", "filename" : "service_level@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Award, Trophy@3x.png", "filename" : "service_level@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_report@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_report@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "service_setting@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "service_setting@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Frame@2x.png", "filename" : "service_task@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Frame@3x.png", "filename" : "service_task@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Some files were not shown because too many files have changed in this diff Show More