From cbd7b5cdbcf15caa45700817b37f48cdb16192b5 Mon Sep 17 00:00:00 2001 From: liyuhua <15626451870@163.com> Date: Mon, 20 Nov 2023 14:25:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contents.json | 22 +++++ .../mine_give_diamond_search@2x.png | Bin 0 -> 8731 bytes .../mine_give_diamond_search@3x.png | Bin 0 -> 23912 bytes .../View/Guild/View/XPMineGuildListVC.m | 45 ++++++++--- .../Guild/View/XPMineGuildViewController.h | 9 ++- .../Guild/View/XPMineGuildViewController.m | 3 + .../YMMine/View/PISwitchingEnvironmentVC.m | 3 +- .../YMMine/View/XPMineViewController.m | 4 +- YuMi/Modules/YMNewHome/Api/Api+Home.h | 2 + YuMi/Modules/YMNewHome/Api/Api+Home.m | 4 + .../Presenter/XPHomeContainerPresenter.h | 2 + .../Presenter/XPHomeContainerPresenter.m | 9 +++ .../Presenter/XPNewHomeRecommendPresenter.h | 3 +- .../Protocol/XPHomeContainerProtocol.h | 3 + .../Protocol/XPNewHomeRecommendProtocol.h | 1 + .../YMNewHome/View/XPNewHomeViewController.m | 33 +++++++- YuMi/Modules/YMRoom/Model/ActivityInfoModel.h | 4 +- .../PIRoomActivityWebCell.m | 4 +- .../PIRoomActivityWebView.m | 10 +++ .../XPRoomActivityContainerView.m | 2 +- .../View/AnimationView/XPRoomAnimationView.m | 75 +++++++++-------- .../AnimationView/XPRoomNobleLevelUpView.h | 4 +- .../AnimationView/XPRoomNobleLevelUpView.m | 16 +++- .../XPRoomMessageContainerView.m | 5 +- .../View/Cell/XPGiftItemCollectionViewCell.m | 5 +- .../View/PIGiftInfoSegmentedView.m | 34 ++++++-- .../View/SendGiftView/View/XPGiftInfoView.m | 21 +---- .../View/SendGiftView/View/XPSendGiftView.m | 6 -- .../View/StageView/MicroView/MicroView.m | 1 + .../View/PIFullScreenBannerAnimation.m | 76 ++++++++++-------- .../YMTabbar/View/TabbarViewController.m | 9 ++- YuMi/Network/HttpRequestHelper.m | 12 ++- YuMi/Structure/MVP/Model/BaseModel.h | 2 +- YuMi/Tools/YYUtility/YYUtility+App.m | 16 +++- YuMi/Tools/YYUtility/YYUtility+Carrier.m | 7 +- YuMi/Tools/YYUtility/YYUtility.h | 6 +- YuMi/zh-Hans.lproj/Localizable.strings | 3 +- YuMi/zh-Hant.lproj/Localizable.strings | 3 +- 38 files changed, 319 insertions(+), 145 deletions(-) create mode 100644 YuMi/Assets.xcassets/jm/Guild/mine_give_diamond_search.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/jm/Guild/mine_give_diamond_search.imageset/mine_give_diamond_search@2x.png create mode 100644 YuMi/Assets.xcassets/jm/Guild/mine_give_diamond_search.imageset/mine_give_diamond_search@3x.png diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_give_diamond_search.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Guild/mine_give_diamond_search.imageset/Contents.json new file mode 100644 index 00000000..f8d74541 --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Guild/mine_give_diamond_search.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_give_diamond_search@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_give_diamond_search@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/jm/Guild/mine_give_diamond_search.imageset/mine_give_diamond_search@2x.png b/YuMi/Assets.xcassets/jm/Guild/mine_give_diamond_search.imageset/mine_give_diamond_search@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0b621b1872422e094be29cc2f9d5e72c832e9b GIT binary patch literal 8731 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 S@ +@interface XPMineGuildListVC () @property (nonatomic,strong) UITableView *tableView; ///数据源 @property (nonatomic,strong) NSMutableArray *dataList; @@ -37,15 +37,15 @@ [super viewDidLoad]; [self showLoading]; if(self.type == 0){ - + [self.presenter getGuildListData]; }else{ [self.presenter getRoomListData]; } - + [self initSubViews]; [self initSubViewConstraints]; - + } #pragma mark - JXCategoryListContentViewDelegate - (UIView *)listView { @@ -62,7 +62,7 @@ if (self.scrollCallback){ self.scrollCallback(scrollView); } - + } #pragma mark - Private Method @@ -78,7 +78,7 @@ if (@available(iOS 15.0, *)) {//移除iOS15列表头默认增加的22高度 self.tableView.sectionHeaderTopPadding = 0; } - + } - (void)initSubViewConstraints { if(self.type == 1){ @@ -90,14 +90,14 @@ make.top.mas_equalTo(kGetScaleWidth(10)); }]; [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.equalTo(self.view); - make.top.equalTo(self.searchView.mas_bottom).mas_offset(kGetScaleWidth(16)); + make.left.right.bottom.equalTo(self.view); + make.top.equalTo(self.searchView.mas_bottom).mas_offset(kGetScaleWidth(16)); }]; return; } [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.view); + make.edges.equalTo(self.view); }]; } @@ -177,9 +177,17 @@ return; } if(guildModel.hallBtnStatus == 1){ - self.applyModel = guildModel; - [self.presenter applyHallWithHallId:@(guildModel.hallId).stringValue]; - [self showLoading]; + TTAlertConfig *config = [[TTAlertConfig alloc]init]; + config.title = YMLocalizedString(@"XPMineGuildListVC5"); + config.message = [NSString stringWithFormat:YMLocalizedString(@"XPMineGuildListVC6"),guildModel.hallName]; + [TTPopup alertWithConfig:config confirmHandler:^{ + self.applyModel = guildModel; + [self.presenter applyHallWithHallId:@(guildModel.hallId).stringValue]; + [self showLoading]; + } cancelHandler:^{ + + }]; + } } @@ -219,7 +227,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if(self.dataList.count == 0)return; XPMineGuildListModel *guildModel = self.dataList[indexPath.row]; - + if(self.type == 0){ XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init]; clanVC.uid = @(guildModel.clanElderUid).stringValue; @@ -229,8 +237,19 @@ XPMineGuildViewController * hallVC = [[XPMineGuildViewController alloc] init]; hallVC.ownerUid = @(guildModel.ownerUid).stringValue; hallVC.guildId = @(guildModel.hallId).stringValue; + hallVC.delegate = self; [self.navigationController pushViewController:hallVC animated:YES]; } +#pragma mark- XPMineGuildViewControllerDelegate +- (void)applyHallSuccessHandleWithHallId:(NSString *)hallId{ + for (XPMineGuildListModel *guildModel in self.dataList) { + if([hallId isEqualToString:@(guildModel.hallId).stringValue]){ + guildModel.hallBtnStatus = 2; + break; + } + } + [self.tableView reloadData]; +} #pragma mark - Getters And Setters - (UITableView *)tableView { if (!_tableView) { diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.h b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.h index 34c83056..7a2b88a6 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.h +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.h @@ -6,11 +6,18 @@ // #import "MvpViewController.h" + +@protocol XPMineGuildViewControllerDelegate + +-(void)applyHallSuccessHandleWithHallId:(NSString *_Nullable)hallId; + +@end + NS_ASSUME_NONNULL_BEGIN @interface XPMineGuildViewController : MvpViewController @property (nonatomic,strong) NSString *ownerUid; @property (nonatomic,strong) NSString *guildId; - +@property(nonatomic,weak) iddelegate; @end diff --git a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m index 57b35840..9c6bf0b9 100644 --- a/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m +++ b/YuMi/Modules/YMMine/View/Guild/View/XPMineGuildViewController.m @@ -437,6 +437,9 @@ UIKIT_EXTERN NSString *kInviteMemeberSuccess; self.stateModel.hallBtnStatus = 2; [self setApplyBut:self.stateModel.hallBtnStatus]; [self showSuccessToast:YMLocalizedString(@"XPMineGuildListVC4")]; + if(self.delegate && [self.delegate respondsToSelector:@selector(applyHallSuccessHandleWithHallId:)]){ + [self.delegate applyHallSuccessHandleWithHallId:self.guildId]; + } } -(void)applyHallFail{ diff --git a/YuMi/Modules/YMMine/View/PISwitchingEnvironmentVC.m b/YuMi/Modules/YMMine/View/PISwitchingEnvironmentVC.m index 58735e8c..ad5caaec 100644 --- a/YuMi/Modules/YMMine/View/PISwitchingEnvironmentVC.m +++ b/YuMi/Modules/YMMine/View/PISwitchingEnvironmentVC.m @@ -39,7 +39,8 @@ UIButton *realBtn = [UIButton new]; - [realBtn setTitle:@"调试" forState:UIControlStateNormal]; + [realBtn setTitle:@"调试捉包工具" forState:UIControlStateNormal]; + realBtn.titleLabel.font = kFontMedium(16); [realBtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; [realBtn addTarget:self action:@selector(showRealTimeView) forControlEvents:UIControlEventTouchUpInside]; diff --git a/YuMi/Modules/YMMine/View/XPMineViewController.m b/YuMi/Modules/YMMine/View/XPMineViewController.m index 750a4a85..b16434d9 100644 --- a/YuMi/Modules/YMMine/View/XPMineViewController.m +++ b/YuMi/Modules/YMMine/View/XPMineViewController.m @@ -201,7 +201,7 @@ UIKIT_EXTERN NSString *kRequestRicket; - (void)pushViewControllerWithType:(NSInteger)type functionItem:(XPMineFuntionItemModel *)item { - if([item.centerName isEqualToString:@"切换分区"]){ + if([item.centerName isEqualToString:@"切换环境"]){ PISwitchingEnvironmentVC *vc = [PISwitchingEnvironmentVC new]; [self.navigationController pushViewController:vc animated:YES]; return; @@ -531,7 +531,7 @@ UIKIT_EXTERN NSString *kRequestRicket; [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventusercenter_function_show eventAttributes:@{@"functionName" : trackName}]; #ifdef DEBUG XPMineFuntionItemModel *item = [XPMineFuntionItemModel new]; - item.centerName = @"切换分区"; + item.centerName = @"切换环境"; item.centerPic = @"mineview_set"; [self.functionArray addObject:item]; #else diff --git a/YuMi/Modules/YMNewHome/Api/Api+Home.h b/YuMi/Modules/YMNewHome/Api/Api+Home.h index d12668a5..eca12932 100644 --- a/YuMi/Modules/YMNewHome/Api/Api+Home.h +++ b/YuMi/Modules/YMNewHome/Api/Api+Home.h @@ -121,6 +121,8 @@ NS_ASSUME_NONNULL_BEGIN + (void)homeChatPick:(HttpRequestHelperCompletion)completion; ///发现新朋友 +(void)requsetFriendListComplection:(HttpRequestHelperCompletion)complection; +///ip检测 ++(void)checkIpRegionComplection:(HttpRequestHelperCompletion)complection; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Api/Api+Home.m b/YuMi/Modules/YMNewHome/Api/Api+Home.m index 006db977..ca210a76 100644 --- a/YuMi/Modules/YMNewHome/Api/Api+Home.m +++ b/YuMi/Modules/YMNewHome/Api/Api+Home.m @@ -155,4 +155,8 @@ +(void)requsetFriendListComplection:(HttpRequestHelperCompletion)complection{ [self makeRequest:@"home/newFriend" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, nil]; } +///ip检测 ++(void)checkIpRegionComplection:(HttpRequestHelperCompletion)complection{ + [self makeRequest:@"ipRegion/check" method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, nil]; +} @end diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h index 19844503..1076dc5f 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h @@ -17,6 +17,8 @@ NS_ASSUME_NONNULL_BEGIN ///首页改版资源位 -(void)getCurrentResourceList; - (void)homeChatPick; +///ip检测 +-(void)checkIpRegionAction; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m index f9a89fe3..78619ca7 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m @@ -24,6 +24,15 @@ } errorToast:NO] uid:uid type:@"1"]; } +///ip检测 +-(void)checkIpRegionAction{ + [Api checkIpRegionComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSLog(@"%@",data.data); + NSLog(@"%@",data.data); + } fail:^(NSInteger code, NSString * _Nullable msg) { + NSLog(@"%@",msg); + }errorToast:NO]]; +} /// 获取所有的房间的tag - (void)getHomeTagList { NSString * uid = [[AccountInfoStorage instance] getUid]; diff --git a/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.h b/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.h index ad02287a..576b64b7 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.h +++ b/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.h @@ -6,7 +6,7 @@ // #import "BaseMvpPresenter.h" -typedef void(^CompleteHandle)(BOOL isSuccess,NSArray *playGameList, NSArray *friendList); +typedef void(^CompleteHandle)(BOOL isSuccess,NSArray * _Nullable playGameList, NSArray * _Nullable friendList); NS_ASSUME_NONNULL_BEGIN @interface XPNewHomeRecommendPresenter : BaseMvpPresenter @@ -27,6 +27,7 @@ NS_ASSUME_NONNULL_BEGIN - (void)getLittleGameList; ///获取首页数据 -(void)getHomeListDataWith:(int)pageNum completeHandle:(CompleteHandle)completeHandle; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h index d30fb18d..7a645f22 100644 --- a/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h +++ b/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h @@ -21,6 +21,9 @@ NS_ASSUME_NONNULL_BEGIN - (void)homeChatPickSuccess:(NSString *)uid; ///一键匹配失败 - (void)homeChatPickFail:(NSString *)msg; +/// +-(void)checkIpRegionFail; +-(void)checkIpRegionSuccess:(NSInteger)seconds; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h index a0c7ae23..8e480565 100644 --- a/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h +++ b/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h @@ -29,6 +29,7 @@ NS_ASSUME_NONNULL_BEGIN -(void)getFriendListFail; ///获取小游戏列表 - (void)onGetLittleGameListSuccess:(NSArray *)items; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m index 7ebb14bb..437b8dfe 100644 --- a/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m @@ -25,7 +25,7 @@ #import "XPWeakTimer.h" ///Model #import "HomeTagModel.h" - +#import "AccountModel.h" #import "XPLittleGameRoomOpenView.h" #import "PIHomeItemModel.h" @@ -47,7 +47,10 @@ #import "XPHomeContainerProtocol.h" #import "ClientConfig.h" #import "SessionViewController.h" - +#import "Api+Main.h" +#import "XPLoginViewController.h" +#import "BaseNavigationController.h" +#import "XPAdImageTool.h" UIKIT_EXTERN NSString * kHomeMoreScrollPageKey; UIKIT_EXTERN NSString * const kOpenRoomNotification; @@ -123,6 +126,23 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; [timer setFireDate:[NSDate distantFuture]]; //很远的将来 } } + +-(void)checkIpRegionSuccess:(NSInteger)seconds{ + +} +- (void)tokenInvalid { + + [[AccountInfoStorage instance] saveAccountInfo:nil]; + [[AccountInfoStorage instance] saveTicket:nil]; + if ([NIMSDK sharedSDK].loginManager.isLogined) { + [[NIMSDK sharedSDK].loginManager logout:nil]; + } + XPLoginViewController *lvc = [[XPLoginViewController alloc] init]; + BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:lvc]; + nav.modalPresentationStyle = UIModalPresentationFullScreen; + kWindow.rootViewController = nav; + XPAdImageTool.shareImageTool.isImLogin = NO; +} #pragma mark - Private Method - (void)addTimer { timer = [XPWeakTimer scheduledTimerWithTimeInterval:15 block:^(id userInfo) { @@ -238,7 +258,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; - (void)initHttp { [self.presenter getHomeTopBannerList]; [self.presenter getCurrentResourceList]; - + [self.presenter checkIpRegionAction]; } @@ -257,6 +277,12 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; -(void)opRoom:(NSString *)roomUid{ [Api getRoomInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if(code == 401){ + + [self tokenInvalid]; + [self showErrorToast:msg]; + return; + } if (code == 200) { RoomInfoModel * roomInfo = [RoomInfoModel modelWithJSON:data.data]; if (roomInfo.isReselect) { @@ -268,6 +294,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; [XPRoomViewController openRoom:roomUid viewController:self]; } } else { + [self showErrorToast:msg]; } } uid:roomUid intoUid:roomUid]; diff --git a/YuMi/Modules/YMRoom/Model/ActivityInfoModel.h b/YuMi/Modules/YMRoom/Model/ActivityInfoModel.h index 23234aad..8031d2f2 100644 --- a/YuMi/Modules/YMRoom/Model/ActivityInfoModel.h +++ b/YuMi/Modules/YMRoom/Model/ActivityInfoModel.h @@ -30,8 +30,10 @@ typedef NS_ENUM(NSInteger, ActivityType) { @interface ActivityInfoModel : PIBaseModel ///名称 @property (nonatomic,copy) NSString *bannerName; -///活动的图片 +///外面的活动的图片 @property (nonatomic, copy)NSString *bannerPic; +///里面的活动的图片 +@property(nonatomic,copy) NSString *bannerUrl; ///跳转类型 @property (nonatomic, assign)ActivitySkipType skipType; ///如果是跳转房间的话 那就是房主的uid 如果是h5的话 那就是链接 diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebCell.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebCell.m index fd687755..a81c7432 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebCell.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebCell.m @@ -34,14 +34,14 @@ } -(void)setInfoModel:(ActivityInfoModel *)infoModel{ _infoModel = infoModel; - _bgImageView.imageUrl = _infoModel.bannerPic; + _bgImageView.imageUrl = _infoModel.bannerUrl; } #pragma mark - 懒加载 - (NetImageView *)bgImageView{ if(!_bgImageView){ NetImageConfig *config = [[NetImageConfig alloc]init]; config.placeHolder = [UIImageConstant defalutBannerPlaceholder]; _bgImageView = [[NetImageView alloc]initWithConfig:config]; - _bgImageView.contentMode = UIViewContentModeScaleAspectFit; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; _bgImageView.layer.cornerRadius = kGetScaleWidth(4); _bgImageView.layer.masksToBounds = YES; _bgImageView.layer.borderWidth = 0; diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebView.m index 35ba9cdf..b4cc35fe 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebView.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebView.m @@ -98,6 +98,14 @@ } } [self.collectionView reloadData]; + [self.collectionView.superview layoutIfNeeded]; + if(_infoList.count > self.path){ + UICollectionViewLayoutAttributes *layoutAttributes = [self.collectionView.collectionViewLayout layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForRow:self.path inSection:0]]; + // 滑动 + CGPoint poiot = CGPointMake(layoutAttributes.frame.origin.x - kGetScaleWidth(10), layoutAttributes.frame.origin.y); + [self.collectionView setContentOffset:poiot animated:YES]; + } + } #pragma mark - 懒加载 - (UICollectionView *)collectionView{ @@ -111,6 +119,8 @@ _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; _collectionView.dataSource = self; _collectionView.delegate = self; + _collectionView.showsVerticalScrollIndicator = NO; + _collectionView.showsHorizontalScrollIndicator = NO; _collectionView.backgroundColor = [UIColor clearColor]; [_collectionView registerClass:[PIRoomActivityWebCell class] forCellWithReuseIdentifier:NSStringFromClass([PIRoomActivityWebCell class])]; diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m index 6b712fe6..b50ce7ba 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m @@ -197,7 +197,7 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; } ///夺宝精灵 -(void)configFairy{ - if (self.fairyModel.open == YES && self.fairyModel.levelLimit <= self.hostDelegate.getUserInfo.userLevelVo.experLevelSeq) { + if (self.fairyModel.open == YES) { if(![self.activityList containsObject:self.fairyActivityModel]){ [self.activityList insertObject:self.fairyActivityModel atIndex:0]; } diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m index b88c89a9..8596dda0 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m @@ -195,6 +195,8 @@ [self addSubview:self.lowLevelView]; [self addSubview:self.middleLevelView]; [self addSubview:self.highLevleView]; + + } - (void)initSubViewConstraints { @@ -1133,40 +1135,47 @@ XPRoomNobleLevelUpView *nobleLevelUpView = [[XPRoomNobleLevelUpView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth, 90)]; nobleLevelUpView.nobleInfo = model.data; [self.highLevleView addSubview:nobleLevelUpView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:nobleLevelUpView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(nobleLevelUpView.frame.size.width / 2, nobleLevelUpView.center.y)]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, nobleLevelUpView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, nobleLevelUpView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - self.isPlayOfB = NO; - [nobleLevelUpView removeFromSuperview]; - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; + @kWeakify(self); + @kWeakify(nobleLevelUpView); + nobleLevelUpView.completionBlock = ^{ + @kStrongify(self); + @kStrongify(nobleLevelUpView); + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:nobleLevelUpView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(nobleLevelUpView.frame.size.width / 2, nobleLevelUpView.center.y)]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(6.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, nobleLevelUpView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, nobleLevelUpView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + self.isPlayOfB = NO; + [nobleLevelUpView removeFromSuperview]; + if (self.animationListB.count > 0) { + [self.animationListB removeObjectAtIndex:0]; + } + // if(self.isAnimationListAFinish == YES){ + // + // [self playAnimationWithModel]; + // self.isAnimationListAFinish = NO; + // return; + // } + [self playAnimationWithModel]; } - // if(self.isAnimationListAFinish == YES){ - // - // [self playAnimationWithModel]; - // self.isAnimationListAFinish = NO; - // return; - // } - [self playAnimationWithModel]; - } - }]; - [nobleLevelUpView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - }); - [nobleLevelUpView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; + }]; + [nobleLevelUpView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + }); + [nobleLevelUpView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; + }; + } #pragma mark - 魔法小屋礼物合成 diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.h b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.h index 98d49ed4..59aaff8f 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.h +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.h @@ -9,11 +9,13 @@ NS_ASSUME_NONNULL_BEGIN +typedef void(^CompletionBlock)(void); + @interface XPRoomNobleLevelUpView : UIView ///贵族升级的信息 @property (nonatomic,copy) NSDictionary * nobleInfo; - +@property(nonatomic,copy) CompletionBlock completionBlock; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.m index f8a310d1..a3161934 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomNobleLevelUpView.m @@ -12,6 +12,7 @@ #import "YUMIMacroUitls.h" #import "ThemeColor+Room.h" #import "NetImageView.h" +#import @interface XPRoomNobleLevelUpView () @@ -31,7 +32,10 @@ @implementation XPRoomNobleLevelUpView - +- (void)dealloc +{ + +} - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { @@ -98,10 +102,20 @@ [self.nobleView startAnimation]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.pi_contentView.attributedText = attribute; + }); + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self.nobleView pauseAnimation]; + + }); + if(self.completionBlock){ + self.completionBlock(); + } + } failureBlock:^(NSError * _Nonnull error) { }]; + } } diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m index 756660bd..d36682c6 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m @@ -343,9 +343,8 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; ///执行插入动画并滚动 - (void)scrollToBottom:(BOOL)animated { if(self.datasource.count > 0){ - [self.messageTableView.superview layoutIfNeeded]; - NSIndexPath *ip = [NSIndexPath indexPathForRow:self.datasource.count-1 inSection:0]; //取最后一行数据 - [self.messageTableView scrollToRowAtIndexPath:ip atScrollPosition:UITableViewScrollPositionBottom animated:animated]; //滚动到最后一行 + CGPoint point = CGPointMake(0, self.messageTableView.contentSize.height - self.messageTableView.frame.size.height); + [self.messageTableView setContentOffset:point]; self.atCount = 0; self.atTipBtn.hidden = YES; [self.locationArray removeAllObjects]; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m index f4e84756..fdd92b4f 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftItemCollectionViewCell.m @@ -148,7 +148,10 @@ - (void)setGiftInfo:(GiftInfoModel *)giftInfo { _giftInfo = giftInfo; if (_giftInfo) { - self.giftImageView.imageUrl = giftInfo.giftUrl; + self.giftImageView.image = nil; + [self.giftImageView loadImageWithUrl:_giftInfo.giftUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + self.giftImageView.image = image; + }]; self.giftNameLabel.text = _giftInfo.giftName.length > 0 ? _giftInfo.giftName : @""; self.coverView.hidden = !giftInfo.isSelected; NSString *strr = [NSString stringWithFormat:@"%ld",(long)_giftInfo.goldPrice]; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/PIGiftInfoSegmentedView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/PIGiftInfoSegmentedView.m index 4cfab297..0c6c8d2a 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/PIGiftInfoSegmentedView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/PIGiftInfoSegmentedView.m @@ -113,6 +113,16 @@ } - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index{ + if (self.usingplaceType == SendGiftType_User) { + self.titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + self.titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; + [self.packGiftButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + }else { + [self.packGiftButton setTitleColor:[DJDKMIMOMColor giftSegmentNormalTitleColor] forState:UIControlStateNormal]; + self.titleView.titleColor = [DJDKMIMOMColor giftSegmentNormalTitleColor]; + self.titleView.titleSelectedColor = [DJDKMIMOMColor giftSegmentSelectTitleColor]; + } + [self.titleView reloadData]; self.pi_containerView.hidden = NO; self.packGiftView.hidden = YES; self.totalValueLabel.hidden = YES; @@ -121,7 +131,11 @@ if(self.delegate && [self.delegate respondsToSelector:@selector(pIGiftInfoSegmentedView:didClickSegment:)]){ [self.delegate pIGiftInfoSegmentedView:self didClickSegment:self.segmentType]; } - + if(self.segmentType == GiftSegmentType_WeekStar){ + if(self.delegate && [self.delegate respondsToSelector:@selector(pIGiftInfoSegmentedView:didClickItem:type:)]){ + [self.delegate pIGiftInfoSegmentedView:self didClickItem:vc.lastSelectGift type:self.segmentType]; + } + } } -(XPGiftInfoView *)getListVC:(NSInteger)index{ @@ -152,6 +166,17 @@ return index.integerValue; } -(void)didClickGiftSegmentAction:(UIButton *)sender{ + if (self.usingplaceType == SendGiftType_User) { + [self.packGiftButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateNormal]; + self.titleView.titleColor = [DJDKMIMOMColor secondTextColor]; + self.titleView.titleSelectedColor = [DJDKMIMOMColor secondTextColor]; + + }else { + [self.packGiftButton setTitleColor:[DJDKMIMOMColor giftSegmentSelectTitleColor] forState:UIControlStateNormal]; + self.titleView.titleColor = [DJDKMIMOMColor giftSegmentNormalTitleColor]; + self.titleView.titleSelectedColor = [DJDKMIMOMColor giftSegmentNormalTitleColor]; + } + [self.titleView reloadData]; self.packGiftView.hidden = NO; self.pi_containerView.hidden = YES; self.totalValueLabel.hidden = NO; @@ -218,7 +243,6 @@ if (self.usingplaceType == SendGiftType_User) { _giftList = [[NSMutableArray alloc]initWithArray:@[normaleArray,weekStarArray,nobleArray]]; }else{ - _giftList = [[NSMutableArray alloc]initWithArray:@[normaleArray,luckyArray,weekStarArray,nobleArray,anchorArray]]; } @@ -256,7 +280,7 @@ self.pi_titles = @[YMLocalizedString(@"XPGiftInfoView2"),YMLocalizedString(@"XPGiftInfoView4"),YMLocalizedString(@"XPGiftInfoView9")]; self.titleView.titles = self.pi_titles; [self.titleView reloadData]; - self.titleView.titleColor = [DJDKMIMOMColor mainTextColor]; + self.titleView.titleColor = [DJDKMIMOMColor secondTextColor]; self.titleView.titleSelectedColor = [DJDKMIMOMColor mainTextColor]; self.segmentBgView.hidden = NO; [self.packGiftButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateSelected]; @@ -270,7 +294,7 @@ #pragma mark- XPGiftInfoViewDelegate ///点击了某个item - (void)xPGiftInfoView:(XPGiftInfoView *)view didClickItem:(GiftInfoModel *)info type:(GiftSegmentType)type{ - if(self.delegate && [self.delegate respondsToSelector:@selector(xPGiftInfoView:didClickItem:type:)]){ + if(self.delegate && [self.delegate respondsToSelector:@selector(pIGiftInfoSegmentedView:didClickItem:type:)]){ [self.delegate pIGiftInfoSegmentedView:self didClickItem:info type:type]; } } @@ -333,11 +357,9 @@ if (!_packGiftButton) { _packGiftButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_packGiftButton setTitle:YMLocalizedString(@"XPGiftInfoView5") forState:UIControlStateNormal]; - [_packGiftButton setTitleColor:[DJDKMIMOMColor giftSegmentSelectTitleColor] forState:UIControlStateSelected]; [_packGiftButton setTitleColor:[DJDKMIMOMColor giftSegmentNormalTitleColor] forState:UIControlStateNormal]; _packGiftButton.titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightSemibold]; _packGiftButton.tag = GiftSegmentType_Pack; - _packGiftButton.selected = NO; [_packGiftButton addTarget:self action:@selector(didClickGiftSegmentAction:) forControlEvents:UIControlEventTouchUpInside]; } return _packGiftButton; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m index cb70e979..4fcc1538 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m @@ -258,7 +258,6 @@ if(_packOriginArray.count > 0 && self.lastSelectGift == nil){ [self dealSelectGift:_packOriginArray.firstObject]; } - // [self createPackTotalValueAttribute]; if(self.isDelFreeGift == YES){ NSMutableArray *originArray = [NSMutableArray array]; for (GiftInfoModel *giftModel in self.packOriginArray) { @@ -289,25 +288,7 @@ _curUserNobleLevel = curUserNobleLevel; [self.giftcollectionView reloadData]; } -- (void)setUsingplaceType:(SendGiftType)usingplaceType { - _usingplaceType = usingplaceType; - // if (_usingplaceType == SendGiftType_User) { - // self.luckyGiftButton.hidden = YES; - // self.graffitiButton.hidden = YES; - // self.anchorButton.hidden = YES; - // self.punishButton.hidden = YES; - // self.segmentBgView.hidden = NO; - // - // [self.normalGiftButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateSelected]; - // [self.normalGiftButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; - // - // [self.weekStarButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateSelected]; - // [self.weekStarButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; - // - // [self.packGiftButton setTitleColor:[DJDKMIMOMColor mainTextColor] forState:UIControlStateSelected]; - // [self.packGiftButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; - // } -} + #pragma mark - JXCategoryListContentViewDelegate - (UIView *)listView { return self; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m index ff47c37b..72db2aff 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m @@ -540,8 +540,6 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; } } else if(type == GiftSegmentType_WeekStar) { [self.luckyBroadcastView removeFromSuperview]; -// if ([ClientConfig shareConfig].configInfo.twelveStarSwitch) { - self.constellationBanner.hidden = NO; if (!self.constellationBanner.superview) { [self.view addSubview:self.constellationBanner]; [self.constellationBanner mas_makeConstraints:^(MASConstraintMaker *make) { @@ -550,10 +548,6 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; make.height.mas_equalTo(kGetScaleWidth(56)); }]; } - -// } else { -// self.constellationBanner.hidden = YES; -// } } else { [self.luckyBroadcastView removeFromSuperview]; [self.constellationBanner removeFromSuperview]; diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m index ea5501f6..ef70fbe9 100644 --- a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m @@ -29,6 +29,7 @@ #define kScpaces 13 @interface MicroView () + ///头像 @property (nonatomic,strong) NetImageView *avatarImageView; ///坑位是否闭麦的 diff --git a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m index 1a011966..3fe21662 100644 --- a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m +++ b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m @@ -560,42 +560,48 @@ XPRoomNobleLevelUpView *nobleLevelUpView = [[XPRoomNobleLevelUpView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth, 90)]; nobleLevelUpView.nobleInfo = model.data; [kWindow addSubview:nobleLevelUpView]; - - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:nobleLevelUpView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(nobleLevelUpView.frame.size.width / 2, nobleLevelUpView.center.y)]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(6.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, nobleLevelUpView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, nobleLevelUpView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - self.isPlayOfB = NO; - [nobleLevelUpView removeFromSuperview]; - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; + @kWeakify(self); + @kWeakify(nobleLevelUpView); + nobleLevelUpView.completionBlock = ^{ + @kStrongify(self); + @kStrongify(nobleLevelUpView); + POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; + springAnimation.springSpeed = 12; + springAnimation.springBounciness = 10.f; + springAnimation.fromValue = [NSValue valueWithCGPoint:nobleLevelUpView.center]; + springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(nobleLevelUpView.frame.size.width / 2, nobleLevelUpView.center.y)]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(6.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; + moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, nobleLevelUpView.center.y)]; + moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, nobleLevelUpView.center.y)]; + moveAnimation.beginTime = CACurrentMediaTime() + 3; + moveAnimation.duration = 0.5; + moveAnimation.repeatCount = 1; + moveAnimation.removedOnCompletion = YES; + @kWeakify(self); + [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { + @kStrongify(self); + if (finished) { + self.isPlayOfB = NO; + [nobleLevelUpView removeFromSuperview]; + if (self.animationListB.count > 0) { + [self.animationListB removeObjectAtIndex:0]; + } + // if(self.isAnimationListAFinish == YES){ + // + // [self playAnimationWithModel]; + // self.isAnimationListAFinish = NO; + // return; + // } + [self playAnimationWithModel]; } -// if(self.isAnimationListAFinish == YES){ -// -// [self playAnimationWithModel]; -// self.isAnimationListAFinish = NO; -// return; -// } - [self playAnimationWithModel]; - } - }]; - [nobleLevelUpView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - }); - - [nobleLevelUpView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; + }]; + [nobleLevelUpView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; + }); + + [nobleLevelUpView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; + }; + } #pragma mark - 收到星级厨房飘屏 -(void)receiveRoomGraffitiStarKitchen:(AttachmentModel *)attacment{ diff --git a/YuMi/Modules/YMTabbar/View/TabbarViewController.m b/YuMi/Modules/YMTabbar/View/TabbarViewController.m index 5a34b27d..38558801 100644 --- a/YuMi/Modules/YMTabbar/View/TabbarViewController.m +++ b/YuMi/Modules/YMTabbar/View/TabbarViewController.m @@ -121,6 +121,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; @property (nonatomic,assign) BOOL isReload; ///是否刷新了 @property (nonatomic,assign) BOOL isInitReload; +@property(nonatomic,assign) BOOL isReloadTicket; ///房间外的飘屏 @property(nonatomic,strong) PIFullScreenBannerAnimation *roomAnimation; @@ -138,7 +139,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; - (void)viewDidLoad { [super viewDidLoad]; - + [self.presenter autoLogin]; [self configTheme]; [self initTabs:NO]; @@ -160,8 +161,6 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; }]; - - [[NSNotificationCenter defaultCenter] addObserverForName:@"reloadnewtab" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { @kStrongify(self); if (self.isInitReload == NO) { @@ -182,7 +181,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:YES]; - + self.isReloadTicket = YES; if ([XPRoomMiniManager shareManager].getRoomInfo == nil) { [self.roomMineView hiddenRoomMiniView]; } @@ -203,6 +202,8 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; return _presenter; } + + /** 登录成功(通过token且换取ticket后)。 1. 登录云信。 diff --git a/YuMi/Network/HttpRequestHelper.m b/YuMi/Network/HttpRequestHelper.m index 258c346d..019323dc 100644 --- a/YuMi/Network/HttpRequestHelper.m +++ b/YuMi/Network/HttpRequestHelper.m @@ -245,13 +245,23 @@ @"model" : [YYUtility modelName], @"deviceId" : [YYUtility deviceUniqueIdentification], @"appVersion" : [YYUtility appVersion], - @"app" : [YYUtility appName] + @"app" : [YYUtility appName], + @"lang" : [YYUtility getLanguage] + }; + if (!parmars||![parmars isKindOfClass:[NSDictionary class]]){ NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithDictionary:defaultBasciParame]; + if(![[YYUtility getMobileCountryCode] isEqualToString:@"65535"]){ + [dic setValue:[YYUtility getMobileCountryCode] forKey:@"mcc"]; + } return dic; } + NSMutableDictionary * dic = [NSMutableDictionary dictionaryWithDictionary:parmars]; + if(![[YYUtility getMobileCountryCode] isEqualToString:@"65535"]){ + [dic setValue:[YYUtility getMobileCountryCode] forKey:@"mcc"]; + } for (NSString *parameKey in defaultBasciParame.allKeys) { [dic setObject:defaultBasciParame[parameKey] forKey:parameKey]; } diff --git a/YuMi/Structure/MVP/Model/BaseModel.h b/YuMi/Structure/MVP/Model/BaseModel.h index 44139d64..b9e76065 100644 --- a/YuMi/Structure/MVP/Model/BaseModel.h +++ b/YuMi/Structure/MVP/Model/BaseModel.h @@ -13,7 +13,7 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic,assign) long timestamp; @property (nonatomic , strong) id data; @property (nonatomic , assign) NSInteger code; -@property (nonatomic , copy) NSString *message; +@property (nonatomic , copy) NSString * message; ///注销的时间戳 因为后端返回的内容和code在同一层级 安卓已经发出去了 兼容就写在这里吧 请不要模仿 @property (nonatomic,assign) long long cancelDate; ///账号封禁返回的code diff --git a/YuMi/Tools/YYUtility/YYUtility+App.m b/YuMi/Tools/YYUtility/YYUtility+App.m index c9a85b34..dee9e45d 100644 --- a/YuMi/Tools/YYUtility/YYUtility+App.m +++ b/YuMi/Tools/YYUtility/YYUtility+App.m @@ -27,7 +27,20 @@ } return appVersion; } - ++(NSString *)getLanguage{ + NSString *language = [NSLocale preferredLanguages].firstObject; + if ([language hasPrefix:@"zh"]) { + if ([language rangeOfString:@"Hans"].location != NSNotFound) { + language = @"zh-Hans"; // 简体中文 + } else { + language = @"zh-Hant"; // 繁體中文 + } + } else { + language = @"zh-Hant"; // 繁體中文 + } + return language; + +} + (NSString *)appName { #ifdef DEBUG NSString *isProduction = [[NSUserDefaults standardUserDefaults]valueForKey:@"kIsProductionEnvironment"]; @@ -180,4 +193,5 @@ static NSString *_from = nil; } return YYUtilityTelephonType_Link_Unknown; } + @end diff --git a/YuMi/Tools/YYUtility/YYUtility+Carrier.m b/YuMi/Tools/YYUtility/YYUtility+Carrier.m index 10bc7a1e..e9d934d4 100644 --- a/YuMi/Tools/YYUtility/YYUtility+Carrier.m +++ b/YuMi/Tools/YYUtility/YYUtility+Carrier.m @@ -48,7 +48,11 @@ static NSSet * kMobileNetworkCodes_ChinaTelecom; // 电信 { return [[CTTelephonyNetworkInfo alloc] init].subscriberCellularProvider; } - ++(NSString *)getMobileCountryCode{ + CTCarrier *carrier = [[CTTelephonyNetworkInfo alloc] init].subscriberCellularProvider; + NSString *code = carrier.mobileCountryCode; + return code; +} + (NSInteger)identifierOfCarrier:(CTCarrier *)carrier { CarrierIdentifier identifier = CarrierIdentifier_Unknown; @@ -84,5 +88,4 @@ static NSSet * kMobileNetworkCodes_ChinaTelecom; // 电信 return identifier; } - @end diff --git a/YuMi/Tools/YYUtility/YYUtility.h b/YuMi/Tools/YYUtility/YYUtility.h index ead95a5a..8de20531 100644 --- a/YuMi/Tools/YYUtility/YYUtility.h +++ b/YuMi/Tools/YYUtility/YYUtility.h @@ -8,7 +8,7 @@ #import typedef enum : NSUInteger { - YYUtilityTelephonType_Move,///移动 + YYUtilityTelephonType_Move = 0,///移动 YYUtilityTelephonType_Link_Together,///联通 YYUtilityTelephonType_Link_Telegraphy,///电信 YYUtilityTelephonType_Link_Tietong,///铁通 @@ -38,7 +38,7 @@ typedef enum : NSUInteger { * 获取App版本号, 从plist从读取CFBundleShortVersion */ + (NSString *)appVersion; - ++(NSString *)getLanguage; /** * 获取AppBuild号, 从plist中读取CFBundleVersion */ @@ -99,7 +99,7 @@ typedef enum : NSUInteger { /* Carrier Utilities */ /*==============================*/ @interface YYUtility (Carrier) - ++(NSString *)getMobileCountryCode; /** 获取设备唯一标识 diff --git a/YuMi/zh-Hans.lproj/Localizable.strings b/YuMi/zh-Hans.lproj/Localizable.strings index e2865a49..a6477e79 100644 --- a/YuMi/zh-Hans.lproj/Localizable.strings +++ b/YuMi/zh-Hans.lproj/Localizable.strings @@ -2535,7 +2535,8 @@ "XPMineGuildListVC2"="发送成功,请耐心等待"; "XPMineGuildListVC3" = "没有搜到相关房间"; "XPMineGuildListVC4" = "申请成功,审核通过后即可加入房间"; - +"XPMineGuildListVC5"="提示"; +"XPMineGuildListVC6"="确认加入公会\n%@"; ///XPMineTheGuildCell.m "XPMineTheGuildCell0" = "公会·房间"; "XPMineTheGuildCell1" = "加入公会"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index 8f9a09b4..87622fcc 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -2533,7 +2533,8 @@ "XPMineGuildListVC2"="發送成功,請耐心等待"; "XPMineGuildListVC3" = "沒有搜到相關房間"; "XPMineGuildListVC4" = "申請成功,審核通過後即可加入房間"; - +"XPMineGuildListVC5"="提示"; +"XPMineGuildListVC6"="確認加入公會\n%@"; ///XPMineTheGuildCell.m "XPMineTheGuildCell0" = "公會·房間"; "XPMineTheGuildCell1" = "加入公會";