7 Commits

Author SHA1 Message Date
启星
6fcb5759ca 上线提交 2026-01-31 09:19:05 +08:00
启星
362df44bb3 最后提交 2026-01-30 15:05:25 +08:00
启星
e70f1b4d16 最后提交 2026-01-29 18:33:29 +08:00
启星
f57a8051d9 炼仙传说+春节皮肤 2026-01-27 19:10:51 +08:00
启星
e5191e0f71 完成礼物功能 2026-01-26 14:19:00 +08:00
启星
472bd8b3ae 提交 2026-01-23 17:08:58 +08:00
启星
491b97f3cb 版本1.1.18 2026-01-21 14:25:45 +08:00
489 changed files with 23343 additions and 209 deletions

View File

@@ -754,7 +754,7 @@
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = 8798G5VMH9;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -793,7 +793,7 @@
"$(inherited)",
"$(SDKROOT)/usr/lib/swift",
);
MARKETING_VERSION = 1.1.17;
MARKETING_VERSION = 1.1.19;
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -820,7 +820,7 @@
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 2;
DEVELOPMENT_TEAM = 8798G5VMH9;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -859,7 +859,7 @@
"$(inherited)",
"$(SDKROOT)/usr/lib/swift",
);
MARKETING_VERSION = 1.1.17;
MARKETING_VERSION = 1.1.19;
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";

View File

@@ -99,8 +99,9 @@
model.icon_gsrz = @"icon_gsrz";
model.icon_wdgd = @"icon_wdgd";
model.icon_sz = @"icon_sz";
model.bg_tabbar = @"bg_tabbar";
model.tabbarSelectedColor = @"#FF3700";
QXConfig.shared.backgroundImage = @"bg_light";
QXConfig.shared.model =model;
}
// QXThemeModel *model = [QXThemeModel yy_modelWithJSON:responseObject[@"data"]];

View File

@@ -57,6 +57,8 @@ typedef void (^showFinishBlock)(void);
@property (nonatomic,strong)NSString *superRoomId;
@property (nonatomic,strong)NSMutableArray *messageArray;
-(void)miniRoomWithRoomId:(NSString*)roomId roomCover:(NSString*)roomCover;

View File

@@ -28,8 +28,9 @@
#import "QXGiftDriftView.h"
#import "QXMeetActivityDriftView.h"
#import "QXRedPacketDriftView.h"
#import "QXRoomPasswordView.h"
@interface QXGlobal()
@interface QXGlobal()<QXRoomPasswordViewDelegate>
@property (nonatomic,assign)BOOL isLogin;
@@ -66,6 +67,9 @@
QXLOG(@"腾讯im退出登录失败");
}];
if (self.roomId) {
if (self.roomVC) {
[self.roomVC.navigationController popToRootViewControllerAnimated:NO];
}
[self quitRoomWithRoomId:self.roomId removeListener:YES];
}
self.isLogin = NO;
@@ -291,7 +295,7 @@
}
weakSelf.isClickJoinRoom = YES;
[[QXRoomMessageManager shared] joinGroupWithRoomId:roomId];
[QXMineNetwork joinRoomWithRoomId:roomId successBlock:^(QXRoomModel * _Nonnull roomModel) {
[QXMineNetwork joinRoomWithRoomId:roomId room_password:@"" successBlock:^(QXRoomModel * _Nonnull roomModel) {
[UIApplication sharedApplication].idleTimerDisabled = YES;
weakSelf.isClickJoinRoom = NO;
weakSelf.roomVC = [[QXRoomViewController alloc] init];
@@ -327,7 +331,7 @@
}
}
[[QXRoomMessageManager shared] joinGroupWithRoomId:roomId];
[QXMineNetwork joinRoomWithRoomId:roomId successBlock:^(QXRoomModel * _Nonnull roomModel) {
[QXMineNetwork joinRoomWithRoomId:roomId room_password:@"" successBlock:^(QXRoomModel * _Nonnull roomModel) {
weakSelf.isClickJoinRoom = NO;
if (weakSelf.roomId && ![weakSelf.roomId isEqualToString:roomId]) {
[weakSelf quitRoomWithRoomId:weakSelf.roomId removeListener:NO];
@@ -353,6 +357,12 @@
} roomErrorBlock:^(NSString * _Nonnull roomId, NSString * _Nonnull msg) {
weakSelf.isClickJoinRoom = NO;
[weakSelf showAlertWithMessage:msg roomId:roomId];
} roomNeedPasswordBlock:^(NSString * _Nonnull msg) {
weakSelf.isClickJoinRoom = NO;
QXRoomPasswordView *pwdView = [[QXRoomPasswordView alloc] init];
pwdView.roomId = roomId;
pwdView.delegate = self;
[pwdView showInView:KEYWINDOW];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
weakSelf.isClickJoinRoom = NO;
showToast(msg);
@@ -361,6 +371,35 @@
}
}
}
-(void)commitRoomPassword:(NSString *)password roomId:(nonnull NSString *)roomId passwordView:(nonnull QXRoomPasswordView *)passwordView{
[passwordView hide];
MJWeakSelf
QXRoomNavigationController*navagationController = (QXRoomNavigationController*)KEYWINDOW.rootViewController;
[[QXRoomMessageManager shared] joinGroupWithRoomId:roomId];
[QXMineNetwork joinRoomWithRoomId:roomId room_password:password successBlock:^(QXRoomModel * _Nonnull roomModel) {
weakSelf.isClickJoinRoom = NO;
if (weakSelf.roomId && ![weakSelf.roomId isEqualToString:roomId]) {
[weakSelf quitRoomWithRoomId:weakSelf.roomId removeListener:NO];
}
[[QXRoomMessageManager shared] joinGroupWithRoomId:roomId];
[UIApplication sharedApplication].idleTimerDisabled = YES;
weakSelf.roomVC = [[QXRoomViewController alloc] init];
weakSelf.roomVC.roomId = roomId;
weakSelf.roomVC.isReJoin = NO;
weakSelf.roomId = roomId;
weakSelf.roomVC.roomModel = roomModel;
weakSelf.roomVC.hidesBottomBarWhenPushed = YES;
[navagationController pushViewController:weakSelf.roomVC animated:YES];
weakSelf.roomId = roomId;
} roomErrorBlock:^(NSString * _Nonnull roomId, NSString * _Nonnull msg) {
weakSelf.isClickJoinRoom = NO;
[weakSelf showAlertWithMessage:msg roomId:roomId];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
// hideLoadingInView(KEYWINDOW)
weakSelf.isClickJoinRoom = NO;
}];
}
-(void)startKeepAlive{
[self stopKeepTimer];
@@ -442,6 +481,10 @@
[[QXRoomMessageManager shared] quitGroupWithRoomId:roomId removeListener:removeListener];
[[QXGlobal shareGlobal].offLineDict removeAllObjects];
[[NSNotificationCenter defaultCenter] removeObserver:self];
if (_miniView) {
[_miniView removeFromSuperview];
_miniView = nil;
}
if (_roomVC) {
///
[_roomVC.seatContentView destroyViews];
@@ -496,4 +539,10 @@
-(void)dirfViewBecomeToFront{
[[QXDrifNobilityJoinRoomView shareView] dirfViewBecomeToFront];
}
-(NSMutableArray *)messageArray{
if (!_messageArray) {
_messageArray = [NSMutableArray array];
}
return _messageArray;
}
@end

View File

@@ -119,6 +119,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *icon_gsrz;
@property (nonatomic,strong)NSString *icon_wdgd;
@property (nonatomic,strong)NSString *icon_sz;
@property (nonatomic,strong)NSString *bg_tabbar;
@end
/// 节日主题

View File

@@ -16,7 +16,7 @@
#import "QXMineNetwork.h"
#import "QXDynamicNetwork.h"
#import "QXCustomAlertView.h"
#import "QXPropShopVC.h"
@interface QXSendGiftView()<JXCategoryViewDelegate,JXCategoryListContainerViewDelegate,QXMenuPopViewDelegate,UIGestureRecognizerDelegate>
///
@@ -52,6 +52,7 @@
@property (nonatomic,strong)NSString *giftCount;
@property (nonatomic,strong)QXSendGiftCollectionView *bagGiftView;
@property (nonatomic,strong)QXSendGiftCollectionView *roomHotCardView;
@property (nonatomic,strong)NSString *giftBagPrice;
@property (nonatomic,strong)NSString *coin;
@@ -347,6 +348,18 @@
[self getMyWallet];
}
-(void)sendAllAction{
if ([self.giftModel.label isEqualToString:@"1013"]) {
MJWeakSelf
QXCustomAlertView *alertView = [[QXCustomAlertView alloc] init];
alertView.cancelBlock = ^{
};
alertView.commitBlock = ^{
[weakSelf sendAllRoomHotCardNetwork];
};
[alertView showInView:self.vc.view title:@"温馨提示" message:@"是否确认将房间热度卡全部送出" cancleTitle:nil commitTitle:nil];
return;
}
if (self.pitUserListView.selectedArray.count == 0) {
showToast(@"请选择送礼对象");
return;
@@ -366,6 +379,15 @@
[alertView showInView:self.vc.view title:@"温馨提示" message:@"是否确认将背包礼物全部送出" cancleTitle:nil commitTitle:nil];
}
-(void)sendAllRoomHotCardNetwork{
MJWeakSelf
[QXMineNetwork roomHotCardUseWithUdid:@"" room_id:self.roomId num:@"" successBlock:^(NSDictionary * _Nonnull dict) {
[weakSelf hide];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
}
//
-(void)sendAllNetWork{
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
@@ -385,8 +407,20 @@
showToast(@"请选择礼物");
return;
}
if (self.pitUserListView.selectedArray.count == 0) {
showToast(@"请选择送礼对象");
if (self.pitUserListView.isHidden == NO) {
if (self.pitUserListView.selectedArray.count == 0) {
showToast(@"请选择送礼对象");
return;
}
}
if ([self.giftModel.label isEqualToString:@"1013"]) {
@weakify(self)
[QXMineNetwork roomHotCardUseWithUdid:self.giftModel.gift_id room_id:self.roomId num:self.giftCount successBlock:^(NSDictionary * _Nonnull dict) {
@strongify(self)
[self.roomHotCardView reloadData];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];
return;
}
self.heartId = @"";
@@ -504,9 +538,15 @@
// [recharge showInView:weakSelf.vc.view];
// }];
[self hide];
QXRechargeView *recharge = [[QXRechargeView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
recharge.isPop = YES;
[recharge showInView:weakSelf.vc.view];
if ([self.rechargeBtn.titleLabel.text containsString:@"去购买"]) {
QXPropShopVC *vc = [[QXPropShopVC alloc] init];
vc.isBuyRoomHotCard = YES;
[self.vc.navigationController pushViewController:vc animated:YES];
}else{
QXRechargeView *recharge = [[QXRechargeView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];
recharge.isPop = YES;
[recharge showInView:weakSelf.vc.view];
}
}
break;
default:
@@ -552,33 +592,34 @@
[self.bgView addSubview:self.pitUserListView];
}
-(void)getCategoryList{
NSString *type = @"1";
if (self.type == QXSendGiftViewTypeFind) {
type = @"2";
}
MJWeakSelf
[QXMineNetwork giftLabelSuccessBlock:^(NSArray<QXGiftLabelModel *> * _Nonnull list) {
[QXMineNetwork giftLabelWithType:type successBlock:^(NSArray<QXGiftLabelModel *> * _Nonnull list) {
[weakSelf.titles removeAllObjects];
[weakSelf.titles addObjectsFromArray:list];
NSMutableArray *arr = [NSMutableArray array];
if (weakSelf.type != QXSendGiftViewTypeFind) {
QXGiftLabelModel *model = [[QXGiftLabelModel alloc] init];
model.name = @"背包";
model.id = @"-10";
[weakSelf.titles insertObject:model atIndex:0];
weakSelf.categoryView.titles = arr;
BOOL haveRoomHot = NO;
for (QXGiftLabelModel*md in weakSelf.titles) {
if ([md.id isEqualToString:@"1013"]) {
haveRoomHot = YES;
}
[arr addObject:md.name];
}
[weakSelf.categoryView setDefaultSelectedIndex:1];
[weakSelf.categoryView setDefaultSelectedIndex:haveRoomHot?2:1];
[weakSelf.categoryView reloadData];
}else{
///
for (QXGiftLabelModel*md in list) {
if ([md.id isEqualToString:@"2"]) {
[weakSelf.titles removeObject:md];
continue;
}else{
[arr addObject:md.name];
}
[arr addObject:md.name];
}
weakSelf.categoryView.titles = arr;
[weakSelf.categoryView setDefaultSelectedIndex:0];
@@ -626,13 +667,31 @@
return;
}
if (index == 0) {
[self.sendAllBtn setTitle:@"一键全送" forState:(UIControlStateNormal)];
[self.sendBtn setTitle:@"赠送" forState:(UIControlStateNormal)];
self.sendAllBtn.hidden = NO;
self.cornLabel.text = self.giftBagPrice;
self.rechargeBtn.hidden = YES;
[self.rechargeBtn setTitle:@"去充值" forState:(UIControlStateNormal)];
self.pitUserListView.hidden = NO;
}else{
self.cornLabel.text = self.coin;
self.sendAllBtn.hidden = YES;
self.rechargeBtn.hidden = !QXGlobal.shareGlobal.isOpenRecharge;
QXGiftLabelModel *typeModel = self.titles[index];
if ([typeModel.id isEqualToString:@"1013"]) {
self.sendAllBtn.hidden = NO;
[self.sendAllBtn setTitle:@"一键全用" forState:(UIControlStateNormal)];
[self.sendBtn setTitle:@"使用" forState:(UIControlStateNormal)];
self.rechargeBtn.hidden = NO;
[self.rechargeBtn setTitle:@"去购买" forState:(UIControlStateNormal)];
self.pitUserListView.hidden = YES;
}else{
self.pitUserListView.hidden = NO;
[self.rechargeBtn setTitle:@"去充值" forState:(UIControlStateNormal)];
[self.sendAllBtn setTitle:@"一键全送" forState:(UIControlStateNormal)];
[self.sendBtn setTitle:@"赠送" forState:(UIControlStateNormal)];
self.cornLabel.text = self.coin;
self.sendAllBtn.hidden = YES;
self.rechargeBtn.hidden = !QXGlobal.shareGlobal.isOpenRecharge;
}
}
}
- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView{
@@ -645,6 +704,9 @@
self.bagGiftView = subGiftView;
}
QXGiftLabelModel *md = self.titles[index];
if ([md.id isEqualToString:@"1013"]) {
self.roomHotCardView = subGiftView;
}
subGiftView.roomId = self.roomId;
subGiftView.giftLabelId = md.id;
subGiftView.type = self.type;

View File

@@ -62,6 +62,9 @@
@weakify(self)
[QXHomePageNetwork homeRoomListWithPage:self.page is_top:NO label_id:self.roomType.id successBlock:^(NSArray<QXRoomListModel *> * _Nonnull list, BOOL isAppStore) {
@strongify(self)
if (self == nil) {
return;
}
if (self.page == 1) {
[self.dataArray removeAllObjects];
}

View File

@@ -31,6 +31,7 @@
#import "QXInvitePopView.h"
#import "QXMineNetwork.h"
#import "QXSignInAppView.h"
#import "QXHomeAppStoreView.h"
@interface QXHomeViewController ()<JXPagerViewDelegate,JXCategoryViewDelegate,GKCycleScrollViewDataSource,GKCycleScrollViewDelegate,QXGiftScrollViewDelegate,SDCycleScrollViewDelegate,QXHomeTopViewDelegate>
@property (nonatomic, strong) JXPagerView *pagingView;
@@ -62,6 +63,7 @@
@property (nonatomic,strong)QXRechargePermissionModel *permissionModel;
@property (nonatomic,strong)QXRoomListModel *recommendRoom;
@property (nonatomic,strong)QXHomeAppStoreView *appStoreView;
///
//@property (nonatomic,strong)NSString* signStatus;
@end
@@ -151,16 +153,22 @@
// }];
[self getBanner];
// [self getRechargePermission];
// self.appStoreView.hidden = YES;
// [self.view addSubview:self.appStoreView];
self.appStoreView.hidden = YES;
[self.view addSubview:self.appStoreView];
if (QXGlobal.shareGlobal.isAppStore) {
self.pagingView.hidden = YES;
self.appStoreView.hidden = NO;
}else{
self.appStoreView.hidden = YES;
self.pagingView.hidden = NO;
}
self.rechargePermissionView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(SCREEN_WIDTH-80-17, SCREEN_HEIGHT-(TabbarContentHeight+90+80), 80, 80) delegate:self placeholderImage:nil];
self.rechargePermissionView.pageControlBottomOffset = -15;
self.rechargePermissionView.backgroundColor = [UIColor clearColor];
self.rechargePermissionView.hidden = YES;
[self.view addSubview:self.rechargePermissionView];
[self getRecommendRoom];
// [self getSignStatus];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
@@ -506,6 +514,9 @@
}
[self.bannerArry removeAllObjects];
[self.bannerArry addObjectsFromArray:list];
if (QXGlobal.shareGlobal.isAppStore) {
self.appStoreView.bannerArray = list;
}
// self.appStoreView.bannerArray = list;
self.bannerScrollView.imageURLStringsGroup = arr;
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
@@ -755,12 +766,12 @@
return _rechargePermissionArray;
}
//-(QXAppstoreHomeView *)appStoreView{
// if (!_appStoreView) {
// _appStoreView = [[QXAppstoreHomeView alloc] initWithFrame:CGRectMake(0, NavContentHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight-TabbarContentHeight)];
// }
// return _appStoreView;
//}
-(QXHomeAppStoreView *)appStoreView{
if (!_appStoreView) {
_appStoreView = [[QXHomeAppStoreView alloc] initWithFrame:CGRectMake(0, NavContentHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight-TabbarContentHeight)];
}
return _appStoreView;
}
-(void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

View File

@@ -11,6 +11,8 @@ NS_ASSUME_NONNULL_BEGIN
@interface QXHotRoomViewController : QXBaseViewController
@property (nonatomic,strong)NSArray<QXRoomListModel *>*list;
@property (nonatomic,strong)NSString *labelId;
@property (nonatomic,strong)NSString *labelName;
@end
NS_ASSUME_NONNULL_END

View File

@@ -7,6 +7,7 @@
#import "QXHotRoomViewController.h"
#import "QXHomeRoomCell.h"
#import "QXHomePageNetwork.h"
@interface QXHotRoomViewController ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
@property (nonatomic,strong)UICollectionView *collectionView;
@@ -20,7 +21,7 @@
}
-(void)setNavgationItems{
[super setNavgationItems];
self.navigationItem.title = @"热门房间";
self.navigationItem.title = [self.labelName isExist]?self.labelName:@"热门房间";
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
@@ -29,6 +30,21 @@
-(void)initSubViews{
[self.view addSubview:self.collectionView];
}
-(void)setLabelId:(NSString *)labelId{
_labelId = labelId;
[self getRoomList];
}
-(void)getRoomList{
@weakify(self)
[QXHomePageNetwork homeRoomListWithPage:0 is_top:NO label_id:self.labelId successBlock:^(NSArray<QXRoomListModel *> * _Nonnull list, BOOL isAppStore) {
@strongify(self)
self.list = list;
[self.collectionView reloadData];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
}
#pragma mark - UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return 1;

View File

@@ -33,6 +33,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *label_icon;
@property (nonatomic,strong)NSString *hot_value;
/// 房间密码
@property (nonatomic,strong)NSString *room_password;
@end

View File

@@ -0,0 +1,45 @@
//
// QXHomeAppStoreView.h
// QXLive
//
// Created by 启星 on 2026/1/17.
//
#import <UIKit/UIKit.h>
#import "QXRoomListModel.h"
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger) {
/// 签约房
QXHomeAppStoreViewTypeSign = 0,
/// ktv
QXHomeAppStoreViewTypeKtv = 1,
/// 唱歌
QXHomeAppStoreViewTypeSinger = 2,
}QXHomeAppStoreViewType;
@interface QXHomeAppStoreView : UIView
@property (nonatomic,strong)NSArray *bannerArray;
@end
@interface QXHomeAppStoreTypeView : UIView
@property (nonatomic,strong)UIImageView *imageView;
@property (nonatomic,strong)UILabel *titleLabel;
@property (nonatomic,strong)UIButton *button;
@property (nonatomic,assign)QXHomeAppStoreViewType viewType;
@end
@interface QXHomeAppStoreTypeCell : UITableViewCell
@property (nonatomic,strong)UIView *bgView;
@property (nonatomic,strong)UIImageView *roomConverImageView;
@property (nonatomic,strong)UILabel *roomNameLabel;
@property (nonatomic,strong)UIImageView *onlineImageView;
@property (nonatomic,strong)UILabel *roomIdLabel;
@property (nonatomic,strong)UIImageView *iconImageView;
@property (nonatomic,strong)UIImageView *hotImageView;
@property (nonatomic,strong)UILabel *hotLabel;
@property (strong, nonatomic) QXRoomListModel *model;
+(instancetype)cellWithTableView:(UITableView*)tableView;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,353 @@
//
// QXHomeAppStoreView.m
// QXLive
//
// Created by on 2026/1/17.
//
#import "QXHomeAppStoreView.h"
#import "SDCycleScrollView/SDCycleScrollView.h"
#import "QXHomePageNetwork.h"
#import "QXUserHomePageViewController.h"
#import "QXHotRoomViewController.h"
@interface QXHomeAppStoreView()<SDCycleScrollViewDelegate,UITableViewDataSource,UITableViewDelegate>
@property (nonatomic,strong)SDCycleScrollView *bannaerView;
@property (nonatomic,strong)QXHomeAppStoreTypeView *signView;
@property (nonatomic,strong)QXHomeAppStoreTypeView *ktvView;
@property (nonatomic,strong)QXHomeAppStoreTypeView *singerView;
@property (nonatomic,strong)UITableView *tableView;
@property (nonatomic,strong)NSMutableArray *dataArray;
@end
@implementation QXHomeAppStoreView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.bannaerView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(16, 0, SCREEN_WIDTH-32, ScaleWidth(136)) delegate:self placeholderImage:nil];
[self.bannaerView addRoundedCornersWithRadius:15];
[self addSubview:self.bannaerView];
self.ktvView = [[QXHomeAppStoreTypeView alloc] init];
self.ktvView.viewType = QXHomeAppStoreViewTypeKtv;
[self addSubview:self.ktvView];
[self.ktvView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(ScaleWidth(107));
make.height.mas_equalTo(ScaleWidth(118));
make.centerX.equalTo(self);
make.top.mas_equalTo(163);
}];
self.signView = [[QXHomeAppStoreTypeView alloc] init];
self.signView.viewType = QXHomeAppStoreViewTypeSign;
[self addSubview:self.signView];
[self.signView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(ScaleWidth(107));
make.height.mas_equalTo(ScaleWidth(118));
make.right.equalTo(self.ktvView.mas_left).offset(-12);
make.top.equalTo(self.ktvView);
}];
self.singerView = [[QXHomeAppStoreTypeView alloc] init];
self.singerView.viewType = QXHomeAppStoreViewTypeSinger;
[self addSubview:self.singerView];
[self.singerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(ScaleWidth(107));
make.height.mas_equalTo(ScaleWidth(118));
make.left.equalTo(self.ktvView.mas_right).offset(12);
make.top.equalTo(self.ktvView);
}];
MJWeakSelf
[self.ktvView addTapBlock:^(id _Nonnull obj) {
QXHotRoomViewController *vc = [[QXHotRoomViewController alloc] init];
vc.labelId = @"2";
vc.labelName = @"练歌厅";
[weakSelf.navigationController pushViewController:vc animated:YES];
}];
[self.signView addTapBlock:^(id _Nonnull obj) {
QXHotRoomViewController *vc = [[QXHotRoomViewController alloc] init];
vc.labelId = @"7";
vc.labelName = @"签约厅";
[weakSelf.navigationController pushViewController:vc animated:YES];
}];
[self.singerView addTapBlock:^(id _Nonnull obj) {
QXHotRoomViewController *vc = [[QXHotRoomViewController alloc] init];
vc.labelId = @"6";
vc.labelName = @"点唱厅";
[weakSelf.navigationController pushViewController:vc animated:YES];
}];
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:(UITableViewStyleGrouped)];
self.tableView.dataSource = self;
self.tableView.delegate = self;
self.tableView.rowHeight = 98;
self.tableView.backgroundColor = UIColor.clearColor;
[self addSubview:self.tableView];
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.ktvView.mas_bottom).offset(10);
make.bottom.equalTo(self);
make.left.right.equalTo(self);
}];
[self getRoomList];
}
-(void)getRoomList{
@weakify(self)
[QXHomePageNetwork homeRoomListWithPage:0 is_top:NO label_id:@"2" successBlock:^(NSArray<QXRoomListModel *> * _Nonnull list, BOOL isAppStore) {
@strongify(self)
[self.dataArray removeAllObjects];
[self.dataArray addObjectsFromArray:list];
[self.tableView reloadData];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
}
-(void)setBannerArray:(NSArray *)bannerArray{
_bannerArray = bannerArray;
NSMutableArray *arr = [NSMutableArray array];
for (QXBanner *banner in bannerArray) {
[arr addObject:banner.image];
}
self.bannaerView.imageURLStringsGroup = arr;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.dataArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
QXHomeAppStoreTypeCell *cell = [QXHomeAppStoreTypeCell cellWithTableView:tableView];
cell.model = self.dataArray[indexPath.row];
return cell;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.width, 30)];
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(16, 0, self.width-32, 30)];
titleLabel.font = [UIFont boldSystemFontOfSize:20];
titleLabel.textColor = RGB16(0xffffff);
[header addSubview:titleLabel];
titleLabel.text = @"热门练歌房";
return header;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 30;
}
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return nil;
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
QXRoomListModel *model = self.dataArray[indexPath.row];
[[QXGlobal shareGlobal] joinRoomWithRoomId:model.room_id isRejoin:NO navagationController:self.navigationController];
}
-(void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index{
if (!QXGlobal.shareGlobal.isLogin) {
[[QXGlobal shareGlobal] logOut];
return;
}
QXBanner *banner = self.bannerArray[index];
if ([banner.type isEqualToString:@"2"]) {
QXBaseWebViewController *webVc = [[QXBaseWebViewController alloc] init];
webVc.urlStr = banner.url;
[self.navigationController pushViewController:webVc animated:YES];
}else if ([banner.type isEqualToString:@"3"]){
[[QXGlobal shareGlobal] joinRoomWithRoomId:banner.aid isRejoin:NO navagationController:self.navigationController];
}else if ([banner.type isEqualToString:@"4"]){
QXUserHomePageViewController *userHomePage = [[QXUserHomePageViewController alloc] init];
userHomePage.user_id = banner.aid;
[self.navigationController pushViewController:userHomePage animated:YES];
}
}
-(NSMutableArray *)dataArray{
if (!_dataArray) {
_dataArray = [NSMutableArray array];
}
return _dataArray;
}
@end
@implementation QXHomeAppStoreTypeView
- (instancetype)init
{
self = [super init];
if (self) {
[self initSubviews];
}
return self;
}
-(void)setViewType:(QXHomeAppStoreViewType )viewType{
_viewType = viewType;
switch (viewType) {
case QXHomeAppStoreViewTypeSign:
{
self.backgroundColor = RGB16(0xF76386);
self.imageView.image = [UIImage imageNamed:@"app_home_store_sign"];
self.titleLabel.text = @"签约";
}
break;
case QXHomeAppStoreViewTypeKtv:
{
self.backgroundColor = RGB16(0xAC97FE);
self.imageView.image = [UIImage imageNamed:@"app_home_store_ktv"];
self.titleLabel.text = @"练歌";
}
break;
case QXHomeAppStoreViewTypeSinger:
{
self.backgroundColor = RGB16(0x05E8AB);
self.imageView.image = [UIImage imageNamed:@"app_home_store_singer"];
self.titleLabel.text = @"点唱";
}
break;
default:
break;
}
}
-(void)initSubviews{
self.imageView = [[UIImageView alloc] init];
[self addSubview:self.imageView];
[self.imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(ScaleWidth(60));
make.centerX.equalTo(self);
make.centerY.equalTo(self).offset(-10);
}];
self.titleLabel = [[UILabel alloc] init];
self.titleLabel.font = [UIFont systemFontOfSize:14];
self.titleLabel.textColor = RGB16(0xffffff);
self.titleLabel.textAlignment = NSTextAlignmentCenter;
[self addSubview:self.titleLabel];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self);
make.top.equalTo(self.imageView.mas_bottom).offset(5);
make.height.mas_equalTo(20);
}];
[self addRoundedCornersWithRadius:20];
}
@end
@implementation QXHomeAppStoreTypeCell
+(instancetype)cellWithTableView:(UITableView *)tableView{
NSString *cellId = @"QXHomeAppStoreTypeCell";
QXHomeAppStoreTypeCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
if (!cell) {
cell = [[QXHomeAppStoreTypeCell alloc] initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:cellId];
}
return cell;
}
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self initSubviews];
self.contentView.backgroundColor = UIColor.clearColor;
self.backgroundColor = UIColor.clearColor;
self.selectionStyle = UITableViewCellSelectionStyleNone;
}
return self;
}
-(void)setModel:(QXRoomListModel *)model{
_model = model;
[self.roomConverImageView sd_setImageWithURL:[NSURL URLWithString:model.room_cover]];
self.roomIdLabel.text = [NSString stringWithFormat:@"ID:%@",model.room_number];
self.roomNameLabel.text = [NSString stringWithFormat:@"%@",model.room_name];
self.hotLabel.text = [NSString qx_showHotCountNum:model.hot_value.longLongValue];
[self.iconImageView sd_setImageWithURL:[NSURL URLWithString:model.label_icon]];
}
-(void)initSubviews{
self.bgView = [[UIView alloc] init];
self.bgView.backgroundColor = RGB16(0x342F3E);
[self.bgView addRoundedCornersWithRadius:16];
[self.contentView addSubview:self.bgView];
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(16);
make.right.mas_equalTo(-16);
make.top.mas_equalTo(8);
make.bottom.mas_equalTo(-8);
}];
self.roomConverImageView = [[UIImageView alloc] init];
self.roomConverImageView.contentMode = UIViewContentModeScaleAspectFill;
[self.bgView addSubview:self.roomConverImageView];
[self.roomConverImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.bottom.equalTo(self.bgView);
make.width.mas_equalTo(self.roomConverImageView.mas_height);
}];
self.iconImageView = [[UIImageView alloc] init];
self.iconImageView.contentMode = UIViewContentModeScaleAspectFit;
[self.bgView addSubview:self.iconImageView];
[self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-7);
make.height.mas_equalTo(30);
make.width.mas_equalTo(56);
make.top.mas_equalTo(8);
}];
self.roomNameLabel = [[UILabel alloc] init];
self.roomNameLabel.font = [UIFont systemFontOfSize:14];
self.roomNameLabel.textColor = RGB16(0xffffff);
self.roomNameLabel.textAlignment = NSTextAlignmentLeft;
[self.bgView addSubview:self.roomNameLabel];
[self.roomNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.roomConverImageView.mas_right).offset(12);
make.top.mas_equalTo(10);
make.height.mas_equalTo(16);
make.right.equalTo(self.iconImageView.mas_left).offset(-10);
}];
//
self.onlineImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"app_home_store_online"]];
[self.bgView addSubview:self.onlineImageView];
[self.onlineImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.roomNameLabel.mas_bottom).offset(5);
make.height.mas_equalTo(18);
make.left.equalTo(self.roomNameLabel);
make.width.mas_equalTo(49);
}];
//
self.roomIdLabel = [[UILabel alloc] init];
self.roomIdLabel.textColor = RGB16(0xCCCDC8);
self.roomIdLabel.font = [UIFont systemFontOfSize:11];
[self.bgView addSubview:self.roomIdLabel];
[self.roomIdLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.roomNameLabel);
make.top.equalTo(self.onlineImageView.mas_bottom).offset(5);
make.height.mas_equalTo(16);
}];
//
self.hotLabel = [[UILabel alloc] init];
self.hotLabel.font = [UIFont systemFontOfSize:11];
self.hotLabel.textColor = RGB16(0xCCCDC8);
[self.bgView addSubview:self.hotLabel];
[self.hotLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-15);
make.centerY.equalTo(self.roomIdLabel);
make.height.mas_equalTo(16);
}];
//
self.hotImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_hot_icon"]];
[self.bgView addSubview:self.hotImageView];
[self.hotImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.hotLabel.mas_left).offset(-3);
make.height.width.mas_equalTo(16);
make.centerY.equalTo(self.hotLabel);
}];
}
@end

View File

@@ -20,6 +20,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (weak, nonatomic) IBOutlet UILabel *countLabel;
@property (weak, nonatomic) IBOutlet UIImageView *roomTypeView;
@property (weak, nonatomic) IBOutlet UIImageView *animateImageView;
@property (weak, nonatomic) IBOutlet UIImageView *lockImageView;
@property (strong, nonatomic) QXRoomListModel *model;
@property (strong, nonatomic) QXMyRoomHistory *historyModel;

View File

@@ -17,6 +17,11 @@
self.nameLabel.text = [NSString stringWithFormat:@"%@",model.room_name];
self.appStoreNameLabel.text = [NSString stringWithFormat:@"%@",model.room_name];
self.countLabel.text = [NSString qx_showHotCountNum:model.hot_value.longLongValue];
if (model.room_password.length > 0) {
self.lockImageView.hidden = NO;
}else{
self.lockImageView.hidden = YES;
}
// if ([model.label_id isEqualToString:@"23"]) {
// self.roomTypeView.image = [UIImage imageNamed:@"Group 7153"];
// }else if ([model.label_id isEqualToString:@"108"]){
@@ -45,6 +50,11 @@
self.nameLabel.text = [NSString stringWithFormat:@"%@",historyModel.room_name];
self.countLabel.text = [NSString qx_showHotCountNum:historyModel.hot_value.longLongValue];
[self.roomTypeView sd_setImageWithURL:[NSURL URLWithString:historyModel.label_icon]];
if (historyModel.room_password.length > 0) {
self.lockImageView.hidden = NO;
}else{
self.lockImageView.hidden = YES;
}
}
-(void)setSearchModel:(QXSearchModel *)searchModel{
_searchModel = searchModel;
@@ -53,6 +63,11 @@
self.nameLabel.text = [NSString stringWithFormat:@"%@",searchModel.name];
self.countLabel.text = [NSString qx_showHotCountNum:searchModel.hot_value.longLongValue];
[self.roomTypeView sd_setImageWithURL:[NSURL URLWithString:searchModel.label_icon]];
if (searchModel.room_password.length > 0) {
self.lockImageView.hidden = NO;
}else{
self.lockImageView.hidden = YES;
}
}
-(void)setIsAppStore:(BOOL)isAppStore{
_isAppStore = isAppStore;

View File

@@ -134,6 +134,13 @@
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</label>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="room_lock" translatesAutoresizingMaskIntoConstraints="NO" id="b7H-DA-VT1">
<rect key="frame" x="117" y="124.66666666666669" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="0VC-Nk-qpi"/>
<constraint firstAttribute="height" constant="60" id="Grm-pw-rVy"/>
</constraints>
</imageView>
</subviews>
</view>
<viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
@@ -151,10 +158,12 @@
<constraint firstAttribute="trailing" secondItem="FdH-8c-jAP" secondAttribute="trailing" constant="12" id="Vg4-Bv-qiW"/>
<constraint firstItem="nPz-Ym-vpk" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="WJN-ti-QhO"/>
<constraint firstAttribute="bottom" secondItem="nPz-Ym-vpk" secondAttribute="bottom" id="aif-M8-0Jh"/>
<constraint firstItem="b7H-DA-VT1" firstAttribute="centerX" secondItem="SEy-5g-ep8" secondAttribute="centerX" id="c4A-uP-tyu"/>
<constraint firstAttribute="trailing" secondItem="EgE-mA-IY6" secondAttribute="trailing" constant="10" id="dhp-tQ-3T6"/>
<constraint firstAttribute="bottom" secondItem="raq-XK-qhh" secondAttribute="bottom" id="eE2-ef-bWE"/>
<constraint firstItem="qsd-Ig-Nmi" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="8" id="gwT-Kf-zHQ"/>
<constraint firstAttribute="trailing" secondItem="GYb-S9-FB8" secondAttribute="trailing" id="mDi-oS-hhJ"/>
<constraint firstItem="b7H-DA-VT1" firstAttribute="centerY" secondItem="SEy-5g-ep8" secondAttribute="centerY" id="n2e-ZW-QaC"/>
<constraint firstAttribute="trailing" secondItem="nPz-Ym-vpk" secondAttribute="trailing" id="nMO-wi-Ic7"/>
<constraint firstItem="raq-XK-qhh" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="qAp-bv-ObA"/>
<constraint firstAttribute="bottom" secondItem="074-Lr-sTa" secondAttribute="bottom" constant="10" id="wAO-bU-aoJ"/>
@@ -168,6 +177,7 @@
<outlet property="countLabel" destination="BSc-rv-bf4" id="3DZ-sZ-CCV"/>
<outlet property="coverImageView" destination="nPz-Ym-vpk" id="3tk-L4-05N"/>
<outlet property="displayMaskView" destination="raq-XK-qhh" id="gYi-Af-gep"/>
<outlet property="lockImageView" destination="b7H-DA-VT1" id="hwD-BK-2VC"/>
<outlet property="nameLabel" destination="V8F-du-Rah" id="Ah9-Wd-QZJ"/>
<outlet property="roomTypeView" destination="GYb-S9-FB8" id="Tgr-f6-Qla"/>
</connections>
@@ -177,5 +187,6 @@
<resources>
<image name="Flow 10001.png" width="150" height="115"/>
<image name="room_hot_icon" width="14" height="14"/>
<image name="room_lock" width="40" height="40"/>
</resources>
</document>

View File

@@ -12,6 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface QXHomeTopRoomCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UIImageView *roomImageView;
@property (weak, nonatomic) IBOutlet UILabel *roomNameLabel;
@property (weak, nonatomic) IBOutlet UIImageView *lockImageView;
@property (strong, nonatomic)QXRoomListModel *model ;
@end

View File

@@ -12,6 +12,11 @@
_model = model;
[self.roomImageView sd_setImageWithURL:[NSURL URLWithString:model.room_cover]];
self.roomNameLabel.text = model.room_name;
if (model.room_password.length > 0) {
self.lockImageView.hidden = NO;
}else{
self.lockImageView.hidden = YES;
}
}
- (void)awakeFromNib {
[super awakeFromNib];

View File

@@ -38,23 +38,36 @@
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="room_lock" translatesAutoresizingMaskIntoConstraints="NO" id="YUp-7L-lc8">
<rect key="frame" x="115" y="88.666666666666671" width="60" height="60.000000000000014"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="aX0-46-fMv"/>
<constraint firstAttribute="height" constant="60" id="nk1-hA-uPY"/>
</constraints>
</imageView>
</subviews>
</view>
<viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
<constraints>
<constraint firstItem="AMc-ga-z0u" firstAttribute="top" secondItem="IPW-qC-f1g" secondAttribute="bottom" constant="8" id="1ZJ-sM-LA1"/>
<constraint firstItem="IPW-qC-f1g" firstAttribute="centerX" secondItem="SEy-5g-ep8" secondAttribute="centerX" id="6SI-qJ-0va"/>
<constraint firstItem="YUp-7L-lc8" firstAttribute="centerX" secondItem="IPW-qC-f1g" secondAttribute="centerX" id="Eqv-La-nLc"/>
<constraint firstItem="IPW-qC-f1g" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="Jl7-NF-LFZ"/>
<constraint firstAttribute="trailing" secondItem="AMc-ga-z0u" secondAttribute="trailing" constant="8" id="hbX-iy-3L1"/>
<constraint firstItem="YUp-7L-lc8" firstAttribute="centerY" secondItem="IPW-qC-f1g" secondAttribute="centerY" id="jbx-Pj-cFH"/>
<constraint firstAttribute="bottom" secondItem="AMc-ga-z0u" secondAttribute="bottom" constant="8" id="lMB-en-E1D"/>
<constraint firstItem="AMc-ga-z0u" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" constant="8" id="zX4-9M-96x"/>
</constraints>
<size key="customSize" width="290" height="267"/>
<connections>
<outlet property="lockImageView" destination="YUp-7L-lc8" id="vte-w2-IGo"/>
<outlet property="roomImageView" destination="IPW-qC-f1g" id="Aub-Kv-UEF"/>
<outlet property="roomNameLabel" destination="AMc-ga-z0u" id="3nx-VQ-OCq"/>
</connections>
<point key="canvasLocation" x="320.61068702290078" y="96.126760563380287"/>
</collectionViewCell>
</objects>
<resources>
<image name="room_lock" width="40" height="40"/>
</resources>
</document>

View File

@@ -30,6 +30,8 @@ static NSString * _Nonnull qx_ac_topic = @"qx_xunlehui";
static NSString * _Nonnull qx_hour_ranking = @"qx_hour_ranking";
/// 红包话题
static NSString * _Nonnull qx_red_redpacket = @"qx_redpacket_arrive";
/// 骏马活动话题
static NSString * _Nonnull qx_xianxuan = @"qx_xianxuan";
NS_ASSUME_NONNULL_BEGIN
@protocol MQTTClientModelDelegate <NSObject>

View File

@@ -88,6 +88,7 @@
[self subscribeTopic:qx_ac_topic];
[self subscribeTopic:qx_hour_ranking];
[self subscribeTopic:qx_red_redpacket];
[self subscribeTopic:qx_xianxuan];
[self reConnectForStateError];
break;

View File

@@ -27,6 +27,8 @@ typedef NS_ENUM(NSInteger) {
QXRoomMessageTypeCpHeartFinished = 131,
/// 师徒任务
QXRoomMessageTypeMasterTask = 132,
/// 用户被封禁
QXAppUserBeBanned = 404,
/// 基础文本消息类型
QXRoomMessageTypeText = 1,

View File

@@ -15,6 +15,7 @@
#import "QXDrifNobilityJoinRoomView.h"
#import "QXCustomAlertView.h"
#import "QXHeartBeatSpaceViewController.h"
#import "QXCustomAlertView.h"
@interface QXRoomMessageManager() <V2TIMGroupListener,V2TIMSimpleMsgListener,V2TIMAdvancedMsgListener>
@property (nonatomic,strong)NSString *groupId;
@@ -915,7 +916,11 @@
}
-(void)onRecvC2CTextMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info text:(NSString *)text{
QXRoomMessage *msg = [QXRoomMessage yy_modelWithJSON:text];
NSInteger meesageType = msg.MsgType.integerValue;
if (meesageType == QXAppUserBeBanned){
[[QXGlobal shareGlobal] logOut];
}
}
-(void)onRecvC2CCustomMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info customData:(NSData *)data{
NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
@@ -957,8 +962,17 @@
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
[self showMasterTaskInviteAlertViewWithRoomId:roomId userId:model.FromUserInfo.user_id];
}
}else if (meesageType == QXAppUserBeBanned){
[[QXGlobal shareGlobal] logOut];
NSString *json = [NSString stringWithFormat:@"%@",msg.Text[@"text"]];
[self performSelector:@selector(userBeBannedWithText:) withObject:json afterDelay:2];
}
}
-(void)userBeBannedWithText:(NSString*)text{
QXCustomAlertView *al = [[QXCustomAlertView alloc] init];
[al showInView:KEYWINDOW title:@"温馨提示" message:text cancleTitle:nil commitTitle:@"确定"];
}
-(void)onRecvGroupCustomMessage:(NSString *)msgID groupID:(NSString *)groupID sender:(V2TIMGroupMemberInfo *)info customData:(NSData *)data{
NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
QXRoomMessage *msg = [QXRoomMessage yy_modelWithJSON:jsonStr];
@@ -975,8 +989,10 @@
[self.delegate didInsertMessge:model];
}
}else if (meesageType == QXRoomMessageTypeClearMessage) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didClearAllMessage)]) {
[self.delegate didClearAllMessage];
if ([self.groupId isEqualToString:groupId]) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didClearAllMessage)]) {
[self.delegate didClearAllMessage];
}
}
}else if (meesageType == QXRoomMessageTypeSongLrc){
NSString *json = [NSString stringWithFormat:@"%@",msg.Text[@"text"]];

View File

@@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface QXGroupMemberViewController : QXBaseViewController
@property (nonatomic,strong)NSString *groupId;
/// 是否为群主 1 是群主 2不是群主
/// 是否为群主 1 是群主 2管理员 3普通群成员
@property (nonatomic,strong)NSString*isOwner;
@end

View File

@@ -102,9 +102,39 @@
cell.cellType = QXBlackListCellTypeGroupMember;
cell.groupMemberModel = self.dataArray[indexPath.row];
cell.delegate = self;
cell.removeBtn.hidden = !(self.isOwner.intValue==1);
// cell.removeBtn.hidden = !(self.isOwner.intValue==1);
cell.removeBtn.hidden = YES;
return cell;
}
-(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath{
BOOL canEdit = self.isOwner.intValue==1 || self.isOwner.intValue==2;
return canEdit;
}
-(UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath{
QXUserHomeModel *model = self.dataArray[indexPath.row];
MJWeakSelf
UIContextualAction *deletAction = [UIContextualAction contextualActionWithStyle:(UIContextualActionStyleDestructive) title:model.is_mute.intValue==1?@"解除禁言":@"禁言" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
[weakSelf didClickGroupMemberMoreBtnWithGroupMemberModel:model];
completionHandler(YES);
}];
UIContextualAction *editAction = [UIContextualAction contextualActionWithStyle:(UIContextualActionStyleNormal) title:model.group_role.intValue==2?@"取消管理":@"设为管理" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
[weakSelf setGroupManagerWithModel:model];
completionHandler(YES);
}];
editAction.backgroundColor = RGB16(0x3665F9);
NSArray *eidtArr;
if (self.isOwner.intValue == 1) {
if (model.group_role.intValue == 1) {
eidtArr = @[deletAction];
}else{
eidtArr = @[deletAction,editAction];
}
}else if (self.isOwner.intValue == 2){
eidtArr = @[deletAction];
}
UISwipeActionsConfiguration *config = [UISwipeActionsConfiguration configurationWithActions:eidtArr];
return config;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
QXUserHomeModel *model = self.dataArray[indexPath.row];
@@ -112,12 +142,10 @@
[self.navigationController pushViewController:vc animated:YES];
}
-(void)didClickGroupMemberMoreBtnWithGroupMemberModel:(QXUserHomeModel *)groupMemberModel{
UIAlertController*al =[UIAlertController alertControllerWithTitle:@"禁言" message:@"" preferredStyle:(UIAlertControllerStyleActionSheet)];
if (groupMemberModel.is_mute.intValue == 1) {
[al addAction:[UIAlertAction actionWithTitle:@"解禁" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
[self muteMemberWithTime:0 groupMemberModel:groupMemberModel];
}]];
[self muteMemberWithTime:0 groupMemberModel:groupMemberModel];
}else{
UIAlertController*al =[UIAlertController alertControllerWithTitle:@"禁言" message:@"" preferredStyle:(UIAlertControllerStyleActionSheet)];
[al addAction:[UIAlertAction actionWithTitle:@"禁言1天" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
[self muteMemberWithTime:86400 groupMemberModel:groupMemberModel];
}]];
@@ -130,13 +158,17 @@
[al addAction:[UIAlertAction actionWithTitle:@"禁言30天" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
[self muteMemberWithTime:86400*30 groupMemberModel:groupMemberModel];
}]];
[al addAction:[UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:^(UIAlertAction * _Nonnull action) {
}]];
[self presentViewController:al animated:YES completion:nil];
}
[al addAction:[UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:^(UIAlertAction * _Nonnull action) {
}]];
[self presentViewController:al animated:YES completion:nil];
}
-(void)muteMemberWithTime:(uint32_t)time groupMemberModel:(QXUserHomeModel*)groupMemberModel{
if (groupMemberModel.group_role.intValue == 4) {
showToast(@"该成员信息错误");
return;
}
[[V2TIMManager sharedInstance] muteGroupMember:self.groupId member:[NSString stringWithFormat:@"u%@",groupMemberModel.user_id] muteTime:time succ:^{
if (time == 0) {
showToast(@"解禁成功");
@@ -153,6 +185,26 @@
showToast(desc);
}];
}
-(void)setGroupManagerWithModel:(QXUserHomeModel*)groupMemberModel{
if (groupMemberModel.group_role.intValue == 4) {
showToast(@"该成员信息错误");
return;
}
uint32_t role = V2TIM_GROUP_MEMBER_ROLE_ADMIN;
if (groupMemberModel.group_role.intValue == 2) {
role = V2TIM_GROUP_MEMBER_ROLE_MEMBER;
}
[[V2TIMManager sharedInstance] setGroupMemberRole:self.groupId member:[NSString stringWithFormat:@"u%@",groupMemberModel.user_id] newRole:role succ:^{
if (self.isSearch) {
[self getMemberListWithSearch:self.textField.text];
}else{
[self getMemberListWithSearch:@""];
}
} fail:^(int code, NSString * _Nullable desc) {
showToast(desc);
}];
}
-(UITableView *)tableView{
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, self.seachBgView.bottom+10, SCREEN_WIDTH, SCREEN_HEIGHT-self.seachBgView.bottom-10) style:(UITableViewStylePlain)];

View File

@@ -10,10 +10,12 @@
#import "QXMessageServices.h"
#import "QXGroupMemberViewController.h"
#import "ImSDK_Plus/V2TIMManager+Group.h"
#import "ImSDK_Plus/V2TIMManager+Conversation.h"
@interface QXIMGroupSettingVC ()<QXIMGroupSettingViewDelegate>
@property (nonatomic,strong)UIScrollView *scrollView;
@property (nonatomic,strong)QXIMGroupSettingView *settingView;
@property (nonatomic,strong)QXGroupSettingInfoModel *model;
@property (nonatomic,strong)V2TIMGroupInfoResult *groupInfo;
@end
@implementation QXIMGroupSettingVC
@@ -35,6 +37,18 @@
self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, NavContentHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight)];
self.settingView = [[QXIMGroupSettingView alloc] initWithFrame:self.scrollView.bounds];
self.settingView.delegate = self;
@weakify(self);
[[V2TIMManager sharedInstance] getGroupsInfo:@[self.groupId] succ:^(NSArray<V2TIMGroupInfoResult *> *groupResultList) {
@strongify(self);
V2TIMGroupInfoResult *groupInfo = [groupResultList firstObject];
if (groupInfo.info.recvOpt == V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE) {
self.settingView.isNotDisturb = YES;
}else{
self.settingView.isNotDisturb = NO;
}
} fail:^(int code, NSString * _Nullable desc) {
}];
[self.scrollView addSubview:self.settingView];
[self.view addSubview:self.scrollView];
[self getGroupInfo];
@@ -67,6 +81,27 @@
}
}];
}
-(void)groupMessageIsNotDisturb:(BOOL)isNotDisturb notDisturbSwitch:(UISwitch *)notDisturbSwitch{
V2TIMReceiveMessageOpt opt;
if (isNotDisturb) {
opt = V2TIM_RECEIVE_NOT_NOTIFY_MESSAGE;
} else {
opt = V2TIM_RECEIVE_MESSAGE;
}
[V2TIMManager.sharedInstance markConversation:@[ [NSString stringWithFormat:@"group_%@", self.groupId] ]
markType:@(V2TIM_CONVERSATION_MARK_TYPE_FOLD)
enableMark:NO
succ:nil
fail:^(int code, NSString * _Nullable desc) {
if (isNotDisturb) {
notDisturbSwitch.on = NO;
}else{
notDisturbSwitch.on = YES;
}
}];
[[V2TIMManager sharedInstance] setGroupReceiveMessageOpt:self.groupId opt:opt succ:nil fail:nil];
}
-(void)getGroupInfo{
MJWeakSelf

View File

@@ -18,7 +18,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (strong,nonatomic)NSString *notification;
/// 群聊头像
@property (strong,nonatomic)NSString *guild_cover;
/// 是否为群主 1 是群主 2不是群主
/// 是否为群主 1 是群主 2管理员 3群成员
@property (strong,nonatomic)NSString *is_deacon;
/// 群成员列表
@property (strong,nonatomic)NSArray <QXUserModel*>*user_list;

View File

@@ -13,10 +13,13 @@ NS_ASSUME_NONNULL_BEGIN
@optional
-(void)previewMemberList;
-(void)groupSetMute:(BOOL)isMute muteSwitch:(UISwitch*)muteSwitch;
/// 消息免打扰
-(void)groupMessageIsNotDisturb:(BOOL)isNotDisturb notDisturbSwitch:(UISwitch*)notDisturbSwitch;
-(void)saveGroupInfoWithGroupId:(NSString*)groupId notice:(NSString*)notice name:(NSString*)name;
@end
@interface QXIMGroupSettingView : UIView
@property (nonatomic,strong)QXGroupSettingInfoModel*model;
@property (nonatomic,assign)BOOL isNotDisturb;
@property (nonatomic,weak)id<QXIMGroupSettingViewDelegate>delegate;
@end

View File

@@ -21,6 +21,9 @@
@property (nonatomic,strong)UILabel *noticeTitleLabel;
@property (nonatomic,strong)QXTextView *textView;
@property (nonatomic,strong)UILabel *messageDisturbLabel;
@property (nonatomic,strong)UISwitch *messageDisturbSwitch;
@property (nonatomic,strong)UILabel *muteLabel;
@property (nonatomic,strong)UISwitch *muteSwitch;
@property (nonatomic,strong)NSMutableArray *dataArray;
@@ -108,7 +111,18 @@
[self addSubview:self.textView];
self.muteLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.guildImageView.left, self.textView.bottom+10, 200, 40)];
self.messageDisturbLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.guildImageView.left, self.textView.bottom+10, 200, 40)];
self.messageDisturbLabel.text = @"消息免打扰";
self.messageDisturbLabel.textColor = RGB16(0x000000);
self.messageDisturbLabel.font = [UIFont boldSystemFontOfSize:16];
[self addSubview:self.messageDisturbLabel];
self.messageDisturbSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(self.width-60-16, self.messageDisturbLabel.top+5, 60, 40)];
[self.messageDisturbSwitch addTarget:self action:@selector(messageDisturbAction) forControlEvents:(UIControlEventValueChanged)];
[self addSubview:self.messageDisturbSwitch];
self.muteLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.guildImageView.left, self.messageDisturbLabel.bottom+10, 200, 40)];
self.muteLabel.text = @"全员禁言";
self.muteLabel.textColor = RGB16(0x000000);
self.muteLabel.font = [UIFont boldSystemFontOfSize:16];
@@ -138,20 +152,25 @@
self.textView.text = model.notification;
[self.muteSwitch setOn:model.mute_all_member.intValue==1];
[self.collectionView reloadData];
if (model.is_deacon.intValue == 2) {
self.muteSwitch.hidden = YES;
self.muteLabel.hidden = YES;
self.saveBtn.hidden = YES;
self.editGroupTextField.userInteractionEnabled = NO;
self.textView.userInteractionEnabled = NO;
}else{
if (model.is_deacon.intValue == 1 || model.is_deacon.intValue == 2) {
self.muteSwitch.hidden = NO;
self.muteLabel.hidden = NO;
self.saveBtn.hidden = NO;
self.editGroupTextField.userInteractionEnabled = YES;
self.textView.userInteractionEnabled = YES;
}else{
self.muteSwitch.hidden = YES;
self.muteLabel.hidden = YES;
self.saveBtn.hidden = YES;
self.editGroupTextField.userInteractionEnabled = NO;
self.textView.userInteractionEnabled = NO;
}
}
-(void)setIsNotDisturb:(BOOL)isNotDisturb{
_isNotDisturb = isNotDisturb;
self.messageDisturbSwitch.on = isNotDisturb;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return self.model.user_list.count;
}
@@ -185,6 +204,18 @@
}
}
-(void)messageDisturbAction{
if (self.messageDisturbSwitch.isOn) {
QXLOG(@"打开免打扰");
}else{
QXLOG(@"关闭免打扰");
}
if (self.delegate && [self.delegate respondsToSelector:@selector(groupMessageIsNotDisturb:notDisturbSwitch:)]) {
[self.delegate groupMessageIsNotDisturb:self.messageDisturbSwitch.isOn notDisturbSwitch:self.messageDisturbSwitch];
}
}
-(NSMutableArray *)dataArray{
if (!_dataArray) {
_dataArray = [NSMutableArray array];

View File

@@ -278,19 +278,19 @@
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];
}
// 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;
case QXMainHeaderOptionTypeRoom:{

View File

@@ -77,7 +77,7 @@
}
-(void)getData{
MJWeakSelf
[QXMineNetwork getDressTypeListSuccessBlock:^(NSArray<QXUserDressTypeModel *> * _Nonnull list) {
[QXMineNetwork getDressTypeListWithFrom:@"2" successBlock:^(NSArray<QXUserDressTypeModel *> * _Nonnull list) {
[weakSelf.dataArray removeAllObjects];
[weakSelf.dataArray addObjectsFromArray:list];
for (QXUserDressTypeModel*model in list) {

View File

@@ -14,6 +14,7 @@
#import "QXTimer.h"
#import "QXMineNetwork.h"
#import "QXCOSUploadManager.h"
//#import "QXRoomDetailHeaderView.h"
@interface QXCreateRoomViewController ()<UITextFieldDelegate>
@property (nonatomic,strong) UILabel *roomCoverLabel;
@@ -36,8 +37,19 @@
@property (nonatomic,strong) UIButton *submitBtn; ///<
@property (nonatomic,assign)NSInteger selectedIndex;
@property (nonatomic,strong) QXTimer *timer;
//@property (nonatomic,strong) UILabel *timeTitleLabel;
//@property (nonatomic,strong) UILabel *startLabel;
//@property (nonatomic,strong) UILabel *lineLabel;
//@property (nonatomic,strong) UILabel *endLabel;
@property (nonatomic,strong)UILabel *priviteLabel;
@property (nonatomic,strong)UIButton *priviteBtn;
@property (nonatomic,strong)UIView *bottomBgView;
@property (nonatomic,strong)UITextField *passwordTextField;
@property (nonatomic,strong) UIButton *pwdDeleteBtn;
@property (nonatomic,strong) QXTimer *timer;
//@property (nonatomic,strong)QXDatePickerView* pickerView;
@end
@implementation QXCreateRoomViewController
@@ -116,6 +128,34 @@
make.right.equalTo(self.deleteBtn.mas_left).offset(-4);
}];
// [self.view addSubview:self.timeTitleLabel];
// [self.view addSubview:self.startLabel];
// [self.view addSubview:self.lineLabel];
// [self.view addSubview:self.endLabel];
// [self.timeTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
// make.top.equalTo(self.textFieldbgView.mas_bottom).offset(12);
// make.left.equalTo(self.roomNameLabel);
// make.height.mas_equalTo(24);
// }];
// [self.lineLabel mas_makeConstraints:^(MASConstraintMaker *make) {
// make.top.equalTo(self.timeTitleLabel.mas_bottom).offset(12);
// make.centerX.equalTo(self.view);
// make.height.mas_equalTo(44);
// make.width.mas_equalTo(20);
// }];
//
// [self.startLabel mas_makeConstraints:^(MASConstraintMaker *make) {
// make.top.equalTo(self.timeTitleLabel.mas_bottom).offset(12);
// make.left.equalTo(self.roomNameLabel);
// make.height.mas_equalTo(44);
// make.right.equalTo(self.lineLabel.mas_left).offset(-3);
// }];
// [self.endLabel mas_makeConstraints:^(MASConstraintMaker *make) {
// make.top.equalTo(self.timeTitleLabel.mas_bottom).offset(12);
// make.left.equalTo(self.lineLabel.mas_right).offset(3);
// make.height.mas_equalTo(44);
// make.right.mas_equalTo(-16);
// }];
[self.view addSubview:self.roomNoticeLabel];
@@ -139,6 +179,60 @@
make.bottom.mas_equalTo(-5);
}];
self.priviteLabel = [[UILabel alloc] init];
self.priviteLabel.font = [UIFont boldSystemFontOfSize:15];
self.priviteLabel.textColor = RGB16A(0x000000, 0.45);
self.priviteLabel.text = QXText(@"是否设置密码");
[self.view addSubview:self.priviteLabel];
[self.priviteLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.noticeBgView.mas_bottom).offset(12);
make.left.equalTo(self.roomNameLabel);
make.height.mas_equalTo(24);
}];
self.priviteBtn = [[UIButton alloc] init];
[self.priviteBtn setImage:[UIImage imageNamed:@"home_switch_off"] forState:(UIControlStateNormal)];
[self.priviteBtn setImage:[UIImage imageNamed:@"home_switch_on"] forState:(UIControlStateSelected)];
[self.priviteBtn addTarget:self action:@selector(priviteAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:self.priviteBtn];
[self.priviteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-16);
make.width.mas_equalTo(40);
make.height.mas_equalTo(35);
make.centerY.equalTo(self.priviteLabel);
}];
self.bottomBgView = [[UIView alloc] init];
[self.bottomBgView addRoundedCornersWithRadius:11];
self.bottomBgView.backgroundColor = RGB16(0xEFF2F8);
[self.view addSubview:self.bottomBgView];
self.passwordTextField = [[UITextField alloc] initWithFrame:CGRectMake(12, 0, self.bottomBgView.width-34, 44)];
self.passwordTextField.placeholder = @"请输入房间密码(4位数字)";
self.passwordTextField.font = [UIFont systemFontOfSize:16];
// self.passwordTextField.secureTextEntry = YES;
self.passwordTextField.keyboardType = UIKeyboardTypeNumberPad;
self.passwordTextField.delegate = self;
[self.passwordTextField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged];
[self.bottomBgView addSubview:self.passwordTextField];
[self.bottomBgView addSubview:self.pwdDeleteBtn];
self.bottomBgView.hidden = YES;
[self.bottomBgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.priviteLabel.mas_bottom).offset(12);
make.left.equalTo(self.roomNameLabel);
make.right.mas_equalTo(-16);
make.height.mas_equalTo(44);
}];
[self.pwdDeleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.equalTo(self.bottomBgView);
make.right.equalTo(self.bottomBgView).offset(-12);
make.width.mas_equalTo(44);
}];
[self.passwordTextField mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.equalTo(self.bottomBgView);
make.left.equalTo(self.bottomBgView).offset(12);
make.right.equalTo(self.pwdDeleteBtn.mas_left).offset(-4);
}];
[self.view addSubview:self.submitBtn];
@@ -173,6 +267,15 @@
if ([self.roomModel.room_info.room_intro isExist]) {
self.textView.placehoulderLabel.hidden = YES;
}
if (self.roomModel.room_info.room_password.length > 0) {
self.bottomBgView.hidden = NO;
self.priviteBtn.selected = YES;
self.passwordTextField.text = self.roomModel.room_info.room_password;
}else{
self.priviteBtn.selected = NO;
self.bottomBgView.hidden = YES;
self.passwordTextField.text = @"";
}
self.roomCoverUrl = self.roomModel.room_info.room_cover;
[self.submitBtn setTitle:QXText(@"确认修改") forState:UIControlStateNormal];
self.warningLabel.hidden = YES;
@@ -184,8 +287,18 @@
}
}
-(void)priviteAction{
self.priviteBtn.selected = !self.priviteBtn.selected;
if (self.priviteBtn.selected) {
self.bottomBgView.hidden = NO;
}else{
self.bottomBgView.hidden = YES;
self.passwordTextField.text = @"";
}
}
-(void)clearPwdAction{
self.passwordTextField.text = @"";
}
-(void)getRandomName{
MJWeakSelf
[QXMineNetwork getRoomRandomNameSuccessBlock:^(NSString * _Nonnull name) {
@@ -204,13 +317,24 @@
showToast(@"请上传房间封面");
return;
}
if (self.priviteBtn.selected == YES) {
if (self.passwordTextField.text.length == 0) {
showToast(@"请输入房间密码");
return;
}
if (self.passwordTextField.text.length > 4) {
showToast(@"房间密码只能是4位数字组成");
return;
}
}
MJWeakSelf
if (self.roomModel) {
[QXMineNetwork roomInfoEditWithRoomId:self.roomModel.room_info.room_id room_name:self.textField.text room_cover:self.roomCoverUrl room_intro:self.textView.text room_background:@"" successBlock:^(NSDictionary * _Nonnull dict) {
[QXMineNetwork roomInfoEditWithRoomId:self.roomModel.room_info.room_id room_name:self.textField.text room_cover:self.roomCoverUrl room_intro:self.textView.text room_background:self.roomModel.room_info.room_background room_password:self.passwordTextField.text successBlock:^(NSDictionary * _Nonnull dict) {
if (weakSelf.editSucceessBlock) {
weakSelf.roomModel.room_info.room_name = weakSelf.textField.text;
weakSelf.roomModel.room_info.room_cover = weakSelf.roomCoverUrl;
weakSelf.roomModel.room_info.room_intro = weakSelf.textView.text;
weakSelf.roomModel.room_info.room_password = weakSelf.passwordTextField.text;
weakSelf.editSucceessBlock(weakSelf.roomModel);
}
[weakSelf.navigationController popViewControllerAnimated:YES];
@@ -218,7 +342,7 @@
showToast(msg)
}];
}else{
[QXMineNetwork createRoomWithName:self.textField.text room_cover:self.roomCoverUrl room_intro:self.textView.text successBlock:^(NSDictionary * _Nonnull dict) {
[QXMineNetwork createRoomWithName:self.textField.text room_cover:self.roomCoverUrl room_intro:self.textView.text room_password:self.passwordTextField.text successBlock:^(NSDictionary * _Nonnull dict) {
if (weakSelf.createSucceessBlock) {
weakSelf.createSucceessBlock();
}
@@ -301,12 +425,34 @@
#pragma mark - UITextFieldDelegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
return [self.textField resignFirstResponder];
[textField resignFirstResponder];
return YES;
}
//-(void)textFieldDidBeginEditing:(UITextField *)textField{
// if (textField == self.passwordTextField) {
// [UIView animateWithDuration:0.1 animations:^{
// self.view.y = 550;
// }];
// }
//}
//-(void)textFieldDidEndEditing:(UITextField *)textField{
// if (textField == self.passwordTextField) {
// [UIView animateWithDuration:0.1 animations:^{
// self.view.y = 0;
// }];
// }
//}
- (void)textFieldDidChanged:(UITextField *)textField {
if (textField.text.length > 20) {
[textField deleteBackward];
if (textField == self.textField) {
if (textField.text.length > 20) {
[textField deleteBackward];
}
}else{
if (textField.text.length == 4) {
[textField resignFirstResponder];
}
}
}
#pragma mark - Btn Click
@@ -325,6 +471,9 @@
// sender.selected = !sender.selected;
// self.typeBtn = sender;
//}
//-(void)selectedTimeAction{
// [self.pickerView show];
//}
- (void)onSubmitBtnClick:(UIButton *)btn {
[self requestCreateMineRoomData];
@@ -360,6 +509,14 @@
}
return _deleteBtn;
}
-(UIButton *)pwdDeleteBtn{
if (!_pwdDeleteBtn) {
_pwdDeleteBtn = [[UIButton alloc] init];
[_pwdDeleteBtn setImage:[UIImage imageNamed:@"Plus Circle"] forState:(UIControlStateNormal)];
[_pwdDeleteBtn addTarget:self action:@selector(clearPwdAction) forControlEvents:(UIControlEventTouchUpInside)];
}
return _pwdDeleteBtn;
}
- (UITextField *)textField {
if (!_textField) {
_textField = [[UITextField alloc] init];
@@ -385,6 +542,58 @@
}
return _roomNoticeLabel;
}
//-(UILabel *)timeTitleLabel{
// if (!_timeTitleLabel) {
// _timeTitleLabel = [[UILabel alloc] init];
// _timeTitleLabel.font = [UIFont boldSystemFontOfSize:15];
// _timeTitleLabel.textColor = RGB16A(0x000000, 0.45);
// _timeTitleLabel.text = @"营业时间";
// }
// return _timeTitleLabel;
//}
//-(UILabel *)startLabel{
// if (!_startLabel) {
// _startLabel = [[UILabel alloc] init];
// _startLabel.font = [UIFont boldSystemFontOfSize:15];
// _startLabel.textColor = RGB16(333333);
// _startLabel.text = @"00:00";
// _startLabel.backgroundColor = [UIColor colorWithHexString:@"#F0EEF7"];
// [_startLabel addRoundedCornersWithRadius:11];
// _startLabel.textAlignment = NSTextAlignmentCenter;
// MJWeakSelf
// [_startLabel addTapBlock:^(id _Nonnull obj) {
// [weakSelf selectedTimeAction];
// }];
// }
// return _startLabel;
//}
//-(UILabel *)lineLabel{
// if (!_lineLabel) {
// _lineLabel = [[UILabel alloc] init];
// _lineLabel.font = [UIFont boldSystemFontOfSize:15];
// _lineLabel.textColor = RGB16(333333);
// _lineLabel.text = @"-";
// _lineLabel.textAlignment = NSTextAlignmentCenter;
// }
// return _lineLabel;
//}
//-(UILabel *)endLabel{
// if (!_endLabel) {
// _endLabel = [[UILabel alloc] init];
// _endLabel.font = [UIFont boldSystemFontOfSize:15];
// _endLabel.textColor = RGB16(333333);
// _endLabel.text = @"24:00";
// _endLabel.backgroundColor = [UIColor colorWithHexString:@"#F0EEF7"];
// [_endLabel addRoundedCornersWithRadius:11];
// _endLabel.textAlignment = NSTextAlignmentCenter;
// MJWeakSelf
// [_endLabel addTapBlock:^(id _Nonnull obj) {
// [weakSelf selectedTimeAction];
// }];
// }
// return _endLabel;
//}
-(UILabel *)roomCoverLabel{
if (!_roomCoverLabel) {
@@ -467,4 +676,19 @@
}
return _warningLabel;
}
//-(QXDatePickerView *)pickerView{
// if (!_pickerView) {
// _pickerView = [[QXDatePickerView alloc] init];
// _pickerView.pickerView.pickerMode = BRDatePickerModeHM;
// _pickerView.pickerView.maxDate = [NSDate br_setHour:23 minute:59];
// _pickerView.pickerView.minDate = [NSDate br_setHour:00 minute:00];
// _pickerView.pickerView.selectDate = [NSDate br_setHour:00 minute:00];
// MJWeakSelf
// _pickerView.chooseDateBlock = ^(NSString * _Nonnull startTime, NSString * _Nonnull endTime) {
// weakSelf.startLabel.text = startTime;
// weakSelf.endLabel.text = endTime;
// };
// }
// return _pickerView;
//}
@end

View File

@@ -10,7 +10,7 @@
NS_ASSUME_NONNULL_BEGIN
@interface QXBackpackSubViewController : QXBaseViewController<JXCategoryListContentViewDelegate>
/// 0背包道具 1背包收入 2背包支出
/// 0背包道具 1背包收入 2背包支出 3热度卡
@property (nonatomic,assign)NSInteger type;
@end

View File

@@ -9,6 +9,7 @@
#import "QXGiftCell.h"
#import "QXBackpackRecordCell.h"
#import "QXMineNetwork.h"
#import "QXDressCell.h"
@interface QXBackpackSubViewController ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
@property (nonatomic,strong)UICollectionView *collectionView;
@@ -28,8 +29,16 @@
if (self.type == 0) {
[self getBagList];
self.collectionView.frame = CGRectMake(0, 12, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight-44-10);
}else{
[self getGiftRecordListIsIncome:self.type == 1];
}else if(self.type == 1){
[self getHotCardList];
self.collectionView.frame = CGRectMake(0, 12, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight-44-10);
}else if(self.type == 2){
[self getGiftRecordListIsIncome:YES];
[self.collectionView addRoundedCornersWithRadius:16];
self.collectionView.backgroundColor = [UIColor whiteColor];
self.collectionView.frame = CGRectMake(16, 12, SCREEN_WIDTH-32, SCREEN_HEIGHT-NavContentHeight-44-10);
}else if(self.type == 3){
[self getGiftRecordListIsIncome:NO];
[self.collectionView addRoundedCornersWithRadius:16];
self.collectionView.backgroundColor = [UIColor whiteColor];
self.collectionView.frame = CGRectMake(16, 12, SCREEN_WIDTH-32, SCREEN_HEIGHT-NavContentHeight-44-10);
@@ -49,7 +58,21 @@
[weakSelf.collectionView.mj_footer endRefreshing];
}];
}
-(void)getHotCardList{
@weakify(self)
[QXMineNetwork userDressListWithType:@"13" successBlock:^(NSArray<QXUserDressModel *> * _Nonnull list) {
@strongify(self);
[self.dataArray removeAllObjects];
[self.dataArray addObjectsFromArray:list];
[self.collectionView reloadData];
[self.collectionView.mj_header endRefreshing];
[self.collectionView.mj_footer endRefreshing];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
@strongify(self);
[self.collectionView.mj_header endRefreshing];
[self.collectionView.mj_footer endRefreshing];
}];
}
-(void)getGiftRecordListIsIncome:(BOOL)isIncom{
MJWeakSelf
if (isIncom) {
@@ -100,6 +123,10 @@
cell.roomGiftModel = self.dataArray[indexPath.row];
cell.cellType = QXGiftCellTypeBackpack;
return cell;
}else if(self.type == 1){
QXDressCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXDressCell" forIndexPath:indexPath];
cell.model = self.dataArray[indexPath.row];
return cell;
}else{
QXBackpackRecordCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXBackpackRecordCell" forIndexPath:indexPath];
if (indexPath.row == (self.dataArray.count - 1)) {
@@ -112,7 +139,7 @@
}
}
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
if (self.type == 0) {
if (self.type == 0 || self.type == 1) {
CGFloat width = (SCREEN_WIDTH-15*2-22*2)/3;
return CGSizeMake(width, width/100*136);
}else{
@@ -142,22 +169,40 @@
_collectionView.dataSource = self;
_collectionView.backgroundColor = [UIColor clearColor];
[_collectionView registerNib:[UINib nibWithNibName:@"QXGiftCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXGiftCell"];
[_collectionView registerNib:[UINib nibWithNibName:@"QXDressCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXDressCell"];
[_collectionView registerNib:[UINib nibWithNibName:@"QXBackpackRecordCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXBackpackRecordCell"];
MJWeakSelf
_collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
weakSelf.page = 1;
weakSelf.page++;
BOOL isIn = NO;
if (weakSelf.type == 2) {
isIn = YES;
}else if(weakSelf.type == 3){
isIn = NO;
}
if (weakSelf.type == 0) {
[weakSelf getBagList];
}else if (weakSelf.type == 1){
[weakSelf getHotCardList];
}else{
[weakSelf getGiftRecordListIsIncome:self.type == 1];
[weakSelf getGiftRecordListIsIncome:isIn];
}
}];
_collectionView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
weakSelf.page++;
BOOL isIn = NO;
if (weakSelf.type == 2) {
isIn = YES;
}else if(weakSelf.type == 3){
isIn = NO;
}
if (weakSelf.type == 0) {
[weakSelf getBagList];
}else if (weakSelf.type == 1){
[weakSelf getHotCardList];
}else{
[weakSelf getGiftRecordListIsIncome:self.type == 1];
[weakSelf getGiftRecordListIsIncome:isIn];
}
}];
}

View File

@@ -32,7 +32,7 @@
}
- (void)initSubViews{
self.view.backgroundColor = [UIColor whiteColor];
self.titles = @[QXText(@"背包道具"),QXText(@"背包收入"),QXText(@"背包支出")];
self.titles = @[QXText(@"背包道具"),@"热度卡",QXText(@"背包收入"),QXText(@"背包支出")];
self.listVCArray = [NSMutableArray array];
self.categoryView = [[JXCategoryTitleView alloc] init];
self.categoryView.frame = CGRectMake(15, kSafeAreaTop+44, SCREEN_WIDTH-30, 44);

View File

@@ -19,6 +19,8 @@
#import "QXSignInAppView.h"
#import "QXCreatPhotosViewController.h"
#import "QXCreateRoomViewController.h"
#import "QXTaskCrystalTagView.h"
#import "JFRoomWishView.h"
@interface QXTaskViewController ()<UITableViewDataSource,UITableViewDelegate,QXDayTaskCellDelegate,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
@property (nonatomic,strong)QXDayTaskTopView *topView;
@@ -28,6 +30,7 @@
@property (nonatomic,strong)QXDayTaskModel *model;
@property (nonatomic,strong)QXDayTaskTypeModel *typeModel;
@property (nonatomic,strong)UIImageView *nodataView;
@property (nonatomic,strong)QXTaskCrystalTagView *shuijingView;
@property (nonatomic,assign)NSInteger selectedInex;
@end
@@ -77,6 +80,12 @@
self.nodataView.hidden = YES;
[self.bottomView addSubview:self.nodataView];
[self createTaskTypeView];
// self.shuijingView = [[QXTaskCrystalTagView alloc] init];
// self.shuijingView.startBlock = ^{
// [JFRoomWishView show];
// };
// [self.view addSubview:self.shuijingView];
}
-(void)createTaskTypeView{
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];

View File

@@ -14,6 +14,8 @@ NS_ASSUME_NONNULL_BEGIN
@property(nonatomic,assign)BOOL isLight;
/// 数据源
@property(nonatomic,strong)NSArray<QXUserGiftWallModel*> *giftArray;
/// 用户id
@property (nonatomic,strong)NSString*userId;
@end
NS_ASSUME_NONNULL_END

View File

@@ -7,6 +7,7 @@
#import "QXGiftWallSubViewController.h"
#import "QXMineGiftWallCell.h"
#import "QXGiftWallDetailView.h"
@interface QXGiftWallSubViewController ()<UICollectionViewDelegate,UICollectionViewDataSource>
@property (nonatomic,strong)UICollectionView *collectionView;
@@ -58,5 +59,14 @@
cell.model = self.giftArray[indexPath.row];
return cell;
}
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
if (self.isLight) {
QXUserGiftWallModel *model = self.giftArray[indexPath.row];
QXGiftWallDetailView *giftDetailView = [[QXGiftWallDetailView alloc] init];
giftDetailView.userId = self.userId;
giftDetailView.giftModel = model;
[giftDetailView showInView:self.view];
}
}
@end

View File

@@ -92,8 +92,10 @@
}
-(id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
if (index == 0) {
self.lightVC.userId = self.userId;
return self.lightVC;
}else{
self.grayVC.userId = self.userId;
return self.grayVC;
}
}

View File

@@ -12,6 +12,8 @@
NS_ASSUME_NONNULL_BEGIN
@interface QXPropShopSubVC : QXBaseViewController<JXCategoryListContentViewDelegate>
/// 是否为购买房间热度卡
@property (nonatomic,assign)BOOL isBuyRoomHotCard;
@property (nonatomic,strong)QXUserDressTypeModel *model;
@end

View File

@@ -10,7 +10,8 @@
NS_ASSUME_NONNULL_BEGIN
@interface QXPropShopVC : QXBaseViewController
/// 是否为购买房间热度卡
@property (nonatomic,assign)BOOL isBuyRoomHotCard;
@end
NS_ASSUME_NONNULL_END

View File

@@ -69,13 +69,23 @@
}
-(void)getData{
MJWeakSelf
[QXMineNetwork getDressTypeListSuccessBlock:^(NSArray<QXUserDressTypeModel *> * _Nonnull list) {
[QXMineNetwork getDressTypeListWithFrom:@"1" successBlock:^(NSArray<QXUserDressTypeModel *> * _Nonnull list) {
[weakSelf.dataArray removeAllObjects];
[weakSelf.dataArray addObjectsFromArray:list];
for (QXUserDressTypeModel*model in list) {
NSInteger roomHotCardIndex = 0;
for (int i = 0; i < list.count; i++) {
QXUserDressTypeModel*model = list[i];
[weakSelf.titles addObject:model.name];
if ([model.id isEqualToString:@"13"]) {
roomHotCardIndex = i;
}
}
weakSelf.categoryView.titles = weakSelf.titles;
if (weakSelf.isBuyRoomHotCard) {
[weakSelf.categoryView setDefaultSelectedIndex:roomHotCardIndex];
}else{
[weakSelf.categoryView setDefaultSelectedIndex:0];
}
[weakSelf.categoryView reloadData];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
@@ -104,6 +114,7 @@
}
-(id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
QXPropShopSubVC *vc = [[QXPropShopSubVC alloc] init];
vc.isBuyRoomHotCard = self.isBuyRoomHotCard;
QXUserDressTypeModel *model = self.dataArray[index];
vc.model = model;
return vc;

View File

@@ -88,7 +88,7 @@
weakSelf.bankNumberTextField.textField.text = bank_card_number;
}
if ([bank_card isExist]) {
weakSelf.bankNumberTextField.textField.text = bank_card_number;
weakSelf.bankNameTextField.textField.text = bank_card;
}
if ([open_bank isExist]) {
weakSelf.bankAddressTextField.textField.text = open_bank;
@@ -107,7 +107,7 @@
[QXMineNetwork walletBindWithUserId:QXGlobal.shareGlobal.loginModel.user_id type:self.model.type alipay_account:self.aliTextField.textField.text bank_card_number:self.bankNumberTextField.textField.text bank_card:self.bankNameTextField.textField.text open_bank:self.bankAddressTextField.textField.text successBlock:^(NSDictionary * _Nonnull dict) {
[weakSelf.navigationController popViewControllerAnimated:YES];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
}];;
}
@end

View File

@@ -45,6 +45,8 @@ NS_ASSUME_NONNULL_BEGIN
/// 当前钱包余额
@property (nonatomic,strong)NSString *user_wallet_coin;
/// 当前礼物所在标签 (只针对热度卡)
@property (nonatomic,strong)NSString *label;
@property (nonatomic,assign)BOOL isSelected;
@end

View File

@@ -84,6 +84,12 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *queue_number;
/// 酒吧房撩人所需金币数
@property (nonatomic,strong)NSString *sexy_coin;
/// 酒吧房撩人所需金币数
@property (nonatomic,strong)NSString *start_time;
/// 酒吧房撩人所需金币数
@property (nonatomic,strong)NSString *end_time;
/// 房间密码
@property (nonatomic,strong)NSString *room_password;
@end
@@ -357,6 +363,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *receive_type;
/// 是否接受pk 1 接收 2不接受
@property (nonatomic,strong)NSString *is_pk;
/// 被闭麦用户
@property (nonatomic,strong)NSString *close_users;
@end

View File

@@ -133,8 +133,10 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *is_use_code;
@property (nonatomic,strong)NSString *in_room_id;
/// 是否被禁言
@property (nonatomic,strong)NSString *is_mute;
/// 群组角色 1 是群主 2管理员 3群成员 4非群成员
@property (nonatomic,strong)NSString *group_role;
@property (nonatomic,strong)QXUserCpInfoModel *cp_info;

View File

@@ -242,9 +242,11 @@ NS_ASSUME_NONNULL_BEGIN
/**
装扮类型列表
type 1 道具商城 2个性装扮
*/
+(void)getDressTypeListSuccessBlock:(void (^)(NSArray<QXUserDressTypeModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
+(void)getDressTypeListWithFrom:(NSString*)type
successBlock:(void (^)(NSArray<QXUserDressTypeModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
@@ -276,6 +278,7 @@ NS_ASSUME_NONNULL_BEGIN
+(void)createRoomWithName:(NSString*)name
room_cover:(NSString*)room_cover
room_intro:(NSString*)room_intro
room_password:(NSString*)room_password
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@@ -300,6 +303,7 @@ NS_ASSUME_NONNULL_BEGIN
+(void)beforeJoinRoomWithRoomId:(NSString *)room_id
successBlock:(void (^)(NSDictionary* dict))successBlock
roomErrorBlock:(void (^)(NSString * roomId, NSString * msg))roomErrorBlock
roomNeedPasswordBlock:(void (^)(NSString * msg))roomNeedPasswordBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@@ -307,6 +311,7 @@ NS_ASSUME_NONNULL_BEGIN
进入房间
*/
+(void)joinRoomWithRoomId:(NSString*)room_id
room_password:(NSString*)room_password
successBlock:(void (^)(QXRoomModel* roomModel))successBlock
roomErrorBlock:(void (^)(NSString * roomId, NSString * msg))roomErrorBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@@ -330,8 +335,9 @@ NS_ASSUME_NONNULL_BEGIN
/**
礼物标签列表
*/
+(void)giftLabelSuccessBlock:(void (^)(NSArray<QXGiftLabelModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
+(void)giftLabelWithType:(NSString*)type
successBlock:(void (^)(NSArray<QXGiftLabelModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
@@ -574,6 +580,7 @@ NS_ASSUME_NONNULL_BEGIN
room_cover:(NSString*)room_cover
room_intro:(NSString*)room_intro
room_background:(NSString*)room_background
room_password:(NSString*)room_password
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@@ -662,7 +669,7 @@ NS_ASSUME_NONNULL_BEGIN
/**
拍卖房关系列表
1真爱拍 2 亲密拍
1真爱拍 2 亲密拍 3 星球房
*/
+(void)roomRelationListWithType:(NSString*)type
successBlock:(void (^)(NSArray<QXRoomRelationModel*>*list))successBlock
@@ -1587,7 +1594,41 @@ NS_ASSUME_NONNULL_BEGIN
successBlock:(void (^)(NSArray* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
设置房间营业时间
*/
+(void)roomSetTimeWithRoomId:(NSString*)roomId
start_time:(NSString*)start_time
end_time:(NSString*)end_time
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
pk闭麦
*/
+(void)roomPkCloseMicWithPkId:(NSString*)pk_id
type:(NSString*)type
user_id:(NSString*)user_id
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
礼物墙礼物用户列表
*/
+(void)giftWallUserListWithUserId:(NSString*)user_id
page:(NSInteger)page
gift_id:(NSString*)gift_id
successBlock:(void (^)(NSArray<QXUserHomeModel*>* list,NSString*count))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
用户房间热度卡使用
*/
+(void)roomHotCardUseWithUdid:(NSString*)udid
room_id:(NSString*)room_id
num:(NSString*)num
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@end

View File

@@ -487,8 +487,10 @@
/**
*/
+(void)getDressTypeListSuccessBlock:(void (^)(NSArray<QXUserDressTypeModel *> * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
[[QXRequset shareInstance] getWithUrl:QXDressTypeList parameters:@{} needCache:NO success:^(id responseObject) {
+(void)getDressTypeListWithFrom:(NSString*)type
successBlock:(void (^)(NSArray<QXUserDressTypeModel *> * _Nonnull))successBlock
failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
[[QXRequset shareInstance] postWithUrl:QXDressTypeList parameters:@{@"from":type?type:@""} needCache:NO success:^(id responseObject) {
if (successBlock) {
NSArray *list = [NSArray yy_modelArrayWithClass:[QXUserDressTypeModel class] json:responseObject[@"data"]];
successBlock(list);
@@ -544,11 +546,12 @@
}
+(void)createRoomWithName:(NSString *)name room_cover:(NSString *)room_cover room_intro:(NSString *)room_intro successBlock:(void (^)(NSDictionary * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
+(void)createRoomWithName:(NSString *)name room_cover:(NSString *)room_cover room_intro:(NSString *)room_intro room_password:(NSString*)room_password successBlock:(void (^)(NSDictionary * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
NSDictionary *parameters =@{
@"room_name":name,
@"room_cover":room_cover?room_cover:@"",
@"room_intro":room_intro?room_intro:@"",
@"room_password":room_password?:@""
};
[[QXRequset shareInstance] getWithUrl:QXCreatRoom parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
@@ -591,6 +594,7 @@
+(void)beforeJoinRoomWithRoomId:(NSString *)room_id
successBlock:(void (^)(NSDictionary* dict))successBlock
roomErrorBlock:(void (^)(NSString * roomId, NSString * msg))roomErrorBlock
roomNeedPasswordBlock:(void (^)(NSString * msg))roomNeedPasswordBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
[[QXRequset shareInstance] postWithUrl:QXBeforeJoinRoom parameters:@{@"room_id":room_id} needCache:NO success:^(id responseObject) {
int code = [responseObject[@"code"] intValue];
@@ -605,6 +609,11 @@
if (roomErrorBlock) {
roomErrorBlock(roomId,content);
}
}if(code == 101){
NSString* message = [NSString stringWithFormat:@"%@",responseObject[@"msg"]];
if (roomNeedPasswordBlock) {
roomNeedPasswordBlock(message);
}
}else{
if (successBlock) {
successBlock(responseObject[@"data"]);
@@ -615,9 +624,10 @@
}];
}
+(void)joinRoomWithRoomId:(NSString *)room_id successBlock:(nonnull void (^)(QXRoomModel * _Nonnull))successBlock roomErrorBlock:(nonnull void (^)(NSString * _Nonnull, NSString * _Nonnull))roomErrorBlock failBlock:(nonnull void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
+(void)joinRoomWithRoomId:(NSString *)room_id room_password:(NSString*)room_password successBlock:(nonnull void (^)(QXRoomModel * _Nonnull))successBlock roomErrorBlock:(nonnull void (^)(NSString * _Nonnull, NSString * _Nonnull))roomErrorBlock failBlock:(nonnull void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
NSDictionary *parameters =@{
@"room_id":room_id?:@""
@"room_id":room_id?:@"",
@"room_password":room_password?:@""
};
[[QXRequset shareInstance] postWithUrl:QXJoinRoom parameters:parameters needCache:NO success:^(id responseObject) {
int code = [responseObject[@"code"] intValue];
@@ -662,7 +672,7 @@
+(void)quitRoomWithRoomId:(NSString *)room_id user_id:(NSString *)user_id successBlock:(void (^)(NSDictionary * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
NSDictionary *parameters =@{
@"room_id":room_id,
@"user_id":user_id
@"user_id":user_id?user_id:@""
};
[[QXRequset shareInstance] postWithUrl:QXQuitRoom parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
@@ -675,11 +685,12 @@
/**
type 1 2
*/
+(void)giftLabelSuccessBlock:(void (^)(NSArray<QXGiftLabelModel*>* list))successBlock
+(void)giftLabelWithType:(NSString*)type
successBlock:(void (^)(NSArray<QXGiftLabelModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
[[QXRequset shareInstance] getWithUrl:QXGiftLabel parameters:@{} needCache:NO success:^(id responseObject) {
[[QXRequset shareInstance] getWithUrl:QXGiftLabel parameters:@{@"type":type?:@""} needCache:NO success:^(id responseObject) {
NSArray *list = [NSArray yy_modelArrayWithClass:[QXGiftLabelModel class] json:responseObject[@"data"]];
successBlock(list);
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
@@ -690,6 +701,8 @@
/**
id0,
id100
*/
+(void)giftListWithLabel:(NSString*)label
roomId:(NSString*)roomId
@@ -1166,13 +1179,16 @@
room_name:(NSString *)room_name
room_cover:(NSString *)room_cover
room_intro:(NSString *)room_intro
room_background:(NSString *)room_background successBlock:(void (^)(NSDictionary * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
room_background:(NSString *)room_background
room_password:(NSString*)room_password
successBlock:(void (^)(NSDictionary * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
NSDictionary *parameters =@{
@"room_id":roomId,
@"room_name":room_name?room_name:@"",
@"room_cover":room_cover?room_cover:@"",
@"room_intro":room_name?room_intro:@"",
@"room_background":room_background?room_background:@"",
@"room_password":room_password?:@""
};
[[QXRequset shareInstance] postWithUrl:QXRoomInfoEdit parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
@@ -3110,6 +3126,7 @@
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"room_id":roomId?:@"",
@"gift_id":gift_id?:@"",
@"gift_remark_name":new_gift_name?:@""
};
@@ -3246,5 +3263,93 @@
failBlock(error,msg);
}];
}
/**
*/
+(void)roomSetTimeWithRoomId:(NSString*)roomId
start_time:(NSString*)start_time
end_time:(NSString*)end_time
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"room_id":roomId?:@"",
@"start_time":start_time?:@"",
@"end_time":end_time?:@""
};
[[QXRequset shareInstance] postWithUrl:QXRoomSetTime parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
successBlock(responseObject[@"data"]);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
pk
*/
+(void)roomPkCloseMicWithPkId:(NSString*)pk_id
type:(NSString*)type
user_id:(NSString*)user_id
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"pk_id":pk_id?:@"",
@"type":type?:@"",
@"user_id":user_id?:@""
};
[[QXRequset shareInstance] postWithUrl:QXRoomPKCloseMic parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
successBlock(responseObject[@"data"]);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
*/
+(void)giftWallUserListWithUserId:(NSString*)user_id
page:(NSInteger)page
gift_id:(NSString*)gift_id
successBlock:(void (^)(NSArray<QXUserHomeModel*>* list,NSString*count))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"user_id":user_id?:@"",
@"gift_id":gift_id?:@"",
@"page":[NSNumber numberWithInteger:page]
};
[[QXRequset shareInstance] postWithUrl:QXUserGiftWallUserList parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
NSArray*list = [NSArray yy_modelArrayWithClass:[QXUserHomeModel class] json:responseObject[@"data"][@"users"]];
NSString*count = [NSString stringWithFormat:@"%@",responseObject[@"data"][@"count"]];
successBlock(list,count);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
使
*/
+(void)roomHotCardUseWithUdid:(NSString*)udid
room_id:(NSString*)room_id
num:(NSString*)num
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"udid":udid?:@"",
@"room_id":room_id?:@"",
@"num":num?:@""
};
[[QXRequset shareInstance] postWithUrl:QXUseRoomHotCard parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
successBlock(responseObject[@"data"]);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
@end

View File

@@ -237,7 +237,11 @@
self.walletBgView = [[UIView alloc] initWithFrame:CGRectMake(self.topBgView.left, self.cycleScrollView.bottom+12, self.topBgView.width, 108)];
self.walletBgView.backgroundColor = RGB16(0x231F2C);
if (QXConfig.shared.model) {
self.walletBgView.backgroundColor = RGB16(0x600D00);
}else{
self.walletBgView.backgroundColor = RGB16(0x231F2C);
}
[self.walletBgView addRoundedCornersWithRadius:8];
[self addSubview:self.walletBgView];

View File

@@ -39,7 +39,11 @@
}
-(void)createViews{
self.bgView = [[UIView alloc] init];
self.bgView.backgroundColor = RGB16(0x231F2C);
if (QXConfig.shared.model) {
self.bgView.backgroundColor = RGB16(0x600D00);
}else{
self.bgView.backgroundColor = RGB16(0x231F2C);
}
[self.bgView addRoundedCornersWithRadius:10];
[self.contentView addSubview:self.bgView];
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {

View File

@@ -250,7 +250,7 @@
[self.guildBgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.headerView.mas_right);
make.height.mas_equalTo(31);
make.bottom.equalTo(self.headerView).offset(-10);
make.bottom.equalTo(self.headerView).offset(5);
make.width.mas_equalTo(94);
}];
@@ -350,6 +350,7 @@
make.top.equalTo(self.cpCardView.mas_bottom).offset(8);
}];
[self.whiteBgView bringSubviewToFront:self.playBtn];
[self.whiteBgView bringSubviewToFront:self.toRoomBtn];
[self bringSubviewToFront:self.followBtn];
}

View File

@@ -19,7 +19,7 @@
_model = model;
self.nameLabel.text = model.title;
[self.dressImageView sd_setImageWithURL:[NSURL URLWithString:model.base_image]];
if ([model.type isEqualToString:@"12"]) {
if ([model.type isEqualToString:@"12"] || [model.type isEqualToString:@"13"]) {
self.timeLabel.text = [NSString stringWithFormat:@"x%@",model.num];
}else{
self.timeLabel.text = [NSString stringWithFormat:@"%@%@",model.remaining_day,QXText(@"天")];

View File

@@ -157,7 +157,7 @@
self.fullEffectView.hidden = NO;
[self.fullEffectView previewEffectWith:self.model.play_image];
}
if ([self.typeId isEqualToString:@"12"]) {
if ([self.typeId isEqualToString:@"12"] || [self.typeId isEqualToString:@"13"]) {
self.titleArray = @[@"商品名称",@"商品单价",@"购买次数",@"商品总价"];
}else{
self.titleArray = @[@"商品名称",@"商品价格",@"有效期至",@"购买时长"];

View File

@@ -19,6 +19,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)UIView *bgView;
@property (nonatomic,strong)UIButton *cancelBtn;
@property (nonatomic,strong)UIButton *doneBtn;
@property (nonatomic,assign)BOOL isNoCompareDate;
@property (nonatomic,strong)UIButton *beginTimeBtn;
@property (nonatomic,strong)UIView *beginTimeLine;
@@ -30,6 +31,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, assign)BRDatePickerMode pickerMode;
@property (nonatomic,strong)NSDate* beginDate;
@property (nonatomic,strong)NSDate* endDate;
@property (nonatomic,strong)NSString *startSelectValue;
@property (nonatomic,strong)NSString *endSelectValue;
@property (nonatomic,copy)void(^chooseDateBlock)(NSString*startTime,NSString*endTime);
@property (nonatomic,copy)void(^selectedDateBlock)(NSString*startTime,NSDate*startDate,NSString*endTime,NSDate*endDate);
-(void)show;

View File

@@ -228,6 +228,9 @@
}
@end
@interface QXDatePickerView ()<UIGestureRecognizerDelegate>
@end
@implementation QXDatePickerView
- (instancetype)initWithFrame:(CGRect)frame
@@ -242,6 +245,11 @@
-(void)createViews{
self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.5];
self.bgView = [[UIView alloc] initWithFrame:CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, ScaleWidth(400))];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hide)];
tap.delegate = self;
[self addGestureRecognizer:tap];
self.bgView.backgroundColor = [UIColor whiteColor];
[self.bgView addRoundedCornersWithRadius:16 byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)];
[self addSubview:self.bgView];
@@ -296,13 +304,19 @@
[self.pickerView addPickerToView:self.pickerBGView];
[self beginTimeAction];
}
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
return touch.view == self;
}
-(void)beginTimeAction{
self.beginTimeBtn.selected = YES;
self.beginTimeLine.backgroundColor = [UIColor colorWithHexString:@"#333333"];
self.endTimeBtn.selected = NO;
self.endTimeLine.backgroundColor = [UIColor colorWithHexString:@"#BBBBBB"];
if (self.beginDate) {
self.pickerView.selectDate = self.beginDate;
}
}
-(void)endTimeAction{
@@ -311,10 +325,34 @@
self.beginTimeBtn.selected = NO;
self.beginTimeLine.backgroundColor = [UIColor colorWithHexString:@"#BBBBBB"];
if (self.endDate) {
self.pickerView.selectDate = self.endDate;
}
}
-(void)cancelAction{
[self hide];
}
-(void)setIsNoCompareDate:(BOOL)isNoCompareDate{
_isNoCompareDate = isNoCompareDate;
}
-(void)setBeginDate:(NSDate *)beginDate{
_beginDate = beginDate;
if (self.pickerMode == BRDatePickerModeHM) {
[self.beginTimeBtn setTitle:[NSString stringWithFormat:@"%02ld:%02ld",(long)beginDate.br_hour,beginDate.br_minute] forState:(UIControlStateNormal)];
}else{
[self.beginTimeBtn setTitle:self.startSelectValue forState:(UIControlStateNormal)];
}
}
-(void)setEndDate:(NSDate *)endDate{
_endDate = endDate;
if (self.pickerMode == BRDatePickerModeHM) {
[self.endTimeBtn setTitle:[NSString stringWithFormat:@"%02ld:%02ld",(long)endDate.br_hour,endDate.br_minute] forState:(UIControlStateNormal)];
}else{
[self.endTimeBtn setTitle:self.endSelectValue forState:(UIControlStateNormal)];
}
}
-(void)doneAction{
if ([self.beginTimeBtn.titleLabel.text isEqualToString:@"开始时间"]) {
showToast(@"请选择开始时间");
@@ -324,10 +362,12 @@
showToast(@"请选择结束时间");
return;
}
NSComparisonResult result = [self.endDate compare:self.beginDate];
if (result == NSOrderedAscending) {
showToast(@"结束时间早于开始时间");
return;
if (!self.isNoCompareDate) {
NSComparisonResult result = [self.endDate compare:self.beginDate];
if (result == NSOrderedAscending) {
showToast(@"结束时间早于开始时间");
return;
}
}
[self hide];
if (self.chooseDateBlock) {
@@ -369,10 +409,12 @@
MJWeakSelf
_pickerView.resultBlock = ^(NSDate * _Nullable selectDate, NSString * _Nullable selectValue) {
if (weakSelf.beginTimeBtn.selected) {
weakSelf.startSelectValue = selectValue;
[weakSelf.beginTimeBtn setTitle:selectValue forState:(UIControlStateNormal)];
weakSelf.beginDate = selectDate;
}else{
[weakSelf.endTimeBtn setTitle:selectValue forState:(UIControlStateNormal)];
weakSelf.endSelectValue = selectValue;
weakSelf.endDate = selectDate;
}
};

View File

@@ -150,7 +150,7 @@
-(void)getGiftList{
MJWeakSelf
[QXMineNetwork giftListWithLabel:@"1" roomId:@"" successBlock:^(NSArray<QXGiftModel *> * _Nonnull list) {
[QXMineNetwork giftListWithLabel:@"100" roomId:@"" successBlock:^(NSArray<QXGiftModel *> * _Nonnull list) {
[weakSelf.dataArray removeAllObjects];
[weakSelf.dataArray addObjectsFromArray:list];
[weakSelf.collectionView reloadData];

View File

@@ -0,0 +1,16 @@
//
// QXTaskCrystalTagView.h
// QXLive
//
// Created by 启星 on 2026/1/26.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface QXTaskCrystalTagView : UIView
@property (nonatomic,copy)void(^startBlock)(void);
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,71 @@
//
// QXTaskCrystalTagView.m
// QXLive
//
// Created by on 2026/1/26.
//
#import "QXTaskCrystalTagView.h"
@interface QXTaskCrystalTagView()
@property (nonatomic,strong)UIImageView *imageView;
@property (nonatomic,strong)UILabel *timeLabel;
@property (nonatomic,strong)UIButton *btn;
@property (nonatomic,strong)UILabel *unreadLabel;
@end
@implementation QXTaskCrystalTagView
- (instancetype)init
{
self = [super init];
if (self) {
self.frame = CGRectMake(SCREEN_WIDTH-104, SCREEN_HEIGHT-400, 104, 104);
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"task_shuijing"]];
self.imageView.frame = CGRectMake(0, 0, 104, 104);
[self addSubview:self.imageView];
self.timeLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, self.imageView.bottom-20-15, self.width, 20)];
self.timeLabel.textAlignment = NSTextAlignmentCenter;
self.timeLabel.font = [UIFont fontWithName:@"DIN Condensed" size:16];
self.timeLabel.textColor = RGB16(0xFFEA00);
self.timeLabel.text = @"许愿卡x0";
[self addSubview:self.timeLabel];
self.btn = [[UIButton alloc] initWithFrame:self.bounds];
[self.btn addTarget:self action:@selector(btnClick) forControlEvents:(UIControlEventTouchUpInside)];
[self addSubview:self.btn];
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[self addGestureRecognizer:panRecognizer];
}
-(void)btnClick{
if (self.startBlock) {
self.startBlock();
}
}
-(void)handlePan:(UIPanGestureRecognizer*)recognizer{
if (recognizer.state == UIGestureRecognizerStateEnded) {
NSLog(@"拖动结束");
}
CGPoint translation = [recognizer translationInView:self.viewController.view];
CGPoint panCenter = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
if (panCenter.y < kSafeAreaTop || panCenter.y> SCREEN_HEIGHT-kSafeAreaBottom) {
return;
}
recognizer.view.center = CGPointMake(SCREEN_WIDTH-ScaleWidth(104)/2,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointZero inView:self.viewController.view];
}
@end

View File

@@ -0,0 +1,25 @@
//
// QXGiftWallDetailView.h
// QXLive
//
// Created by 启星 on 2026/1/23.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface QXGiftWallDetailView : UIView
@property (nonatomic,strong)NSString*userId;
@property (nonatomic,strong)QXUserGiftWallModel*giftModel;
-(void)showInView:(UIView *)view;
-(void)hide;
@end
@interface QXGiftWallDetailCell : UICollectionViewCell
@property (nonatomic,strong)UIImageView *headerImageView;
@property (nonatomic,strong)UILabel *nameLabel;
@property (nonatomic,strong)UILabel *countLabel;
@property (nonatomic,strong)QXUserHomeModel*user;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,233 @@
//
// QXGiftWallDetailView.m
// QXLive
//
// Created by on 2026/1/23.
//
#import "QXGiftWallDetailView.h"
#import "QXMineNetwork.h"
@interface QXGiftWallDetailView()<UICollectionViewDataSource,UICollectionViewDelegate>
@property (strong, nonatomic)UIView *bgView;
@property (strong, nonatomic)UILabel *titleLabel;
@property (strong, nonatomic)UIButton *closeBtn;
@property (strong, nonatomic)UILabel *subTitleLabel;
@property (strong, nonatomic)UILabel *giftCountLabel;
@property (strong, nonatomic)UICollectionView *collectionView;
@property (strong, nonatomic)NSMutableArray *dataArray;
@property (assign, nonatomic)NSInteger page;
@end
@implementation QXGiftWallDetailView
- (instancetype)init
{
self = [super init];
if (self) {
self.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
[self initSubviews];
}
return self;
}
-(void)initSubviews{
self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.4];
self.bgView = [[UIView alloc] initWithFrame:CGRectMake((SCREEN_WIDTH-ScaleWidth(348))/2, (SCREEN_HEIGHT-ScaleWidth(429))/2, ScaleWidth(348), ScaleWidth(429))];
self.bgView.backgroundColor = RGB16(0x134039);
[self.bgView addRoundedCornersWithRadius:16];
[self addSubview:self.bgView];
self.titleLabel = [[UILabel alloc] init];
self.titleLabel.textColor = RGB16(0xffffff);
self.titleLabel.font = [UIFont boldSystemFontOfSize:16];
self.titleLabel.text = @"黄金游轮";
[self.bgView addSubview:self.titleLabel];
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(20);
make.centerX.equalTo(self.bgView);
}];
self.closeBtn = [[UIButton alloc] init];
[self.closeBtn setImage:[UIImage imageNamed:@"wallet_close"] forState:(UIControlStateNormal)];
[self.closeBtn addTarget:self action:@selector(hide) forControlEvents:(UIControlEventTouchUpInside)];
[self.bgView addSubview:self.closeBtn];
[self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.width.mas_equalTo(35);
make.top.mas_equalTo(2);
make.right.mas_equalTo(-2);
}];
self.subTitleLabel = [[UILabel alloc] init];
self.subTitleLabel.textColor = RGB16A(0xffffff,0.65);
self.subTitleLabel.font = [UIFont boldSystemFontOfSize:12];
self.subTitleLabel.text = @"— 历史累计集卡详情 —";
[self.bgView addSubview:self.subTitleLabel];
[self.subTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.titleLabel.mas_bottom).offset(6);
make.centerX.equalTo(self.bgView);
}];
self.giftCountLabel = [[UILabel alloc] init];
self.giftCountLabel.textColor = RGB16(0xffffff);
self.giftCountLabel.font = [UIFont boldSystemFontOfSize:14];
self.giftCountLabel.text = @"黄金邮轮 26 人数 23";
[self.bgView addSubview:self.giftCountLabel];
[self.giftCountLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.subTitleLabel.mas_bottom).offset(13);
make.centerX.equalTo(self.bgView);
}];
[self.bgView addSubview:self.collectionView];
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(0);
make.left.mas_equalTo(0);
make.top.equalTo(self.giftCountLabel.mas_bottom).offset(5);
make.bottom.equalTo(self.bgView).offset(-10);
}];
}
-(void)setGiftModel:(QXUserGiftWallModel *)giftModel{
_giftModel = giftModel;
self.titleLabel.text = giftModel.gift_name;
NSString *userCount = giftModel.top_users_count;
NSString *giftCount = giftModel.total_count;
NSString *giftInfo = [NSString stringWithFormat:@"%@%@ 人数%@",giftModel.gift_name,giftCount,userCount];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:giftInfo];
[attr yy_setColor:RGB16(0xFFFF59) range:[giftInfo rangeOfString:userCount]];
[attr yy_setColor:RGB16(0xFFFF59) range:[giftInfo rangeOfString:giftCount]];
self.giftCountLabel.attributedText = attr;
}
-(void)getUserList{
MJWeakSelf
[QXMineNetwork giftWallUserListWithUserId:self.userId page:self.page gift_id:self.giftModel.gift_id successBlock:^(NSArray<QXUserHomeModel *> * _Nonnull list, NSString * _Nonnull count) {
if (weakSelf.page == 1) {
[weakSelf.dataArray removeAllObjects];
}
[weakSelf.dataArray addObjectsFromArray:list];
[weakSelf.collectionView reloadData];
[weakSelf.collectionView.mj_header endRefreshing];
if (list.count == 0) {
weakSelf.collectionView.mj_footer.state = MJRefreshStateNoMoreData;
}else{
[weakSelf.collectionView.mj_footer endRefreshing];
}
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
[weakSelf.collectionView.mj_header endRefreshing];
[weakSelf.collectionView.mj_footer endRefreshing];
}];
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return self.dataArray.count;
}
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
QXGiftWallDetailCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXGiftWallDetailCell" forIndexPath:indexPath];
cell.user = self.dataArray[indexPath.row];
return cell;
}
-(void)showInView:(UIView *)view{
self.page = 1;
[self getUserList];
self.bgView.alpha = 0;
self.bgView.frame = CGRectMake((SCREEN_WIDTH-ScaleWidth(348))/2, (view.height-ScaleWidth(429))/2, ScaleWidth(348), ScaleWidth(429));
[view addSubview:self];
[UIView animateWithDuration:0.1 animations:^{
self.bgView.alpha = 1;
}completion:^(BOOL finished) {
}];
}
-(void)hide{
[UIView animateWithDuration:0.1 animations:^{
self.bgView.alpha = 0;
}completion:^(BOOL finished) {
[self removeFromSuperview];
}];
}
-(UICollectionView *)collectionView{
if (!_collectionView) {
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.minimumLineSpacing = 20;
layout.minimumInteritemSpacing = 20;
layout.sectionInset = UIEdgeInsetsMake(0, 16, 0, 16);
NSInteger itemWidth =(ScaleWidth(348)-16*2-20*3)/4;
layout.itemSize = CGSizeMake(itemWidth, itemWidth+22);
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
_collectionView.delegate = self;
_collectionView.dataSource = self;
_collectionView.backgroundColor = [UIColor clearColor];
[_collectionView registerNib:[UINib nibWithNibName:@"QXRechargePriceCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXRechargePriceCell"];
[_collectionView registerClass:[QXGiftWallDetailCell class] forCellWithReuseIdentifier:@"QXGiftWallDetailCell"];
MJWeakSelf
_collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
weakSelf.page = 1;
[weakSelf getUserList];
}];
_collectionView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
weakSelf.page++;
[weakSelf getUserList];
}];
}
return _collectionView;
}
-(NSMutableArray *)dataArray{
if (!_dataArray) {
_dataArray = [NSMutableArray array];
}
return _dataArray;
}
@end
@implementation QXGiftWallDetailCell
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubviews];
self.contentView.backgroundColor = [UIColor clearColor];
self.backgroundColor = UIColor.clearColor;
}
return self;
}
-(void)setUser:(QXUserHomeModel *)user{
_user = user;
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:user.avatar]];
self.nameLabel.text = user.nickname;
self.countLabel.text = [NSString stringWithFormat:@"x%@",user.count];
}
-(void)initSubviews{
self.headerImageView = [[UIImageView alloc] init];
self.headerImageView.contentMode = UIViewContentModeScaleAspectFill;
[self.contentView addSubview:self.headerImageView];
NSInteger itemWidth =(ScaleWidth(348)-16*2-20*3)/4;
[self.headerImageView addRoundedCornersWithRadius:itemWidth/2];
[self.headerImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.equalTo(self.contentView);
make.height.equalTo(self.headerImageView.mas_width);
}];
self.countLabel = [[UILabel alloc] init];
self.countLabel.textColor = RGB16(0xFFFF93);
self.countLabel.font = [UIFont boldSystemFontOfSize:12];
self.countLabel.text = @"x0";
[self.contentView addSubview:self.countLabel];
[self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.contentView);
make.bottom.equalTo(self.headerImageView).offset(-4);
make.height.mas_equalTo(17);
}];
self.nameLabel = [[UILabel alloc] init];
self.nameLabel.textColor = RGB16(0xFFFF93);
self.nameLabel.font = [UIFont systemFontOfSize:12];
self.nameLabel.text = @"羽声语音";
[self.contentView addSubview:self.nameLabel];
[self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self.contentView);
make.bottom.equalTo(self.contentView);
make.height.mas_equalTo(20);
}];
}
@end

View File

@@ -43,7 +43,7 @@
<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">
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" 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"/>
@@ -56,19 +56,31 @@
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="mxk-cv-aBW">
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" 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>
<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="Rfn-Wi-s2Q">
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" 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>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="9"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</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"/>

View File

@@ -207,6 +207,29 @@ CGFloat labelHeight = 63;
break;
case QXPasswordViewTypeRoom:{
self.titleLabel.text = QXText(@"请输入房间密码");
self.titleLabel.hidden = YES;
[self.label2 mas_remakeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.mas_centerX).offset(-8);
make.size.mas_equalTo(CGSizeMake(ScaleWidth(44), ScaleWidth(44)));
make.top.equalTo(self).offset(0);
}];
[self.label3 mas_remakeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.mas_centerX).offset(8);
make.size.mas_equalTo(CGSizeMake(ScaleWidth(44), ScaleWidth(44)));
make.top.equalTo(self.label2);
}];
[self.label1 mas_remakeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.label2.mas_left).offset(-16);
make.size.mas_equalTo(CGSizeMake(ScaleWidth(44), ScaleWidth(44)));
make.top.equalTo(self.label2);
}];
[self.label4 mas_remakeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.label3.mas_right).offset(16);
make.size.mas_equalTo(CGSizeMake(ScaleWidth(44), ScaleWidth(44)));
make.top.equalTo(self.label2);
}];
}
break;
default:

View File

@@ -161,12 +161,12 @@
}
-(void)locationSuccessWithCity:(NSString *)city province:(NSString *)province area:(NSString *)area address:(NSString *)address{
[[QXLocationManager shareManager] stopLoction];
NSString *ip = [NSString stringWithFormat:@"%@,%@,%@",province,city,area];
[QXLoginNetwork updateUserIp:ip successBlock:^(id _Nonnull responseObject) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
// NSString *ip = [NSString stringWithFormat:@"%@,%@,%@",province,city,area];
// [QXLoginNetwork updateUserIp:ip successBlock:^(id _Nonnull responseObject) {
//
// } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
//
// }];
}
- (void)onTotalUnreadMessageCountChanged:(UInt64)totalUnreadCount {
self.tabbarVC.messageUnReadNumber = totalUnreadCount;

View File

@@ -77,7 +77,7 @@
// NSLog(@"Font Name:%@" ,name);
// }
}
// Override point for customization after application launch.
[QXConfig defaultConfig];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

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

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