diff --git a/Podfile b/Podfile index 05803b5e..5d9efb90 100644 --- a/Podfile +++ b/Podfile @@ -71,6 +71,7 @@ target 'YuMi' do pod 'TABAnimated' pod 'YuMi',:path=>'yum' pod 'QCloudCOSXML' + pod 'TYCyclePagerView' end post_install do |installer| diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index 3a784cab..314f51ee 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -523,6 +523,7 @@ 5412E0F42C4E460300FDD668 /* XPMineCenterAgencyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5412E0F32C4E460300FDD668 /* XPMineCenterAgencyView.m */; }; 5412E0FD2C52512100FDD668 /* RoomBottomEntranceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5412E0FC2C52512100FDD668 /* RoomBottomEntranceModel.m */; }; 541DD9552C1EDEFB00B616C4 /* XPHomePagingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 541DD9542C1EDEFB00B616C4 /* XPHomePagingViewController.m */; }; + 5456F3C82C6EF962000E1805 /* VIPCenterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5456F3C72C6EF962000E1805 /* VIPCenterViewController.m */; }; 5458319D2C2AE09300364026 /* XPRoomTypeSelectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5458319C2C2AE09300364026 /* XPRoomTypeSelectionViewController.m */; }; 545831A02C2AEFAF00364026 /* TenMicStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5458319F2C2AEFAF00364026 /* TenMicStageView.m */; }; 545831A32C2AF01100364026 /* FifteenMicStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 545831A22C2AF01100364026 /* FifteenMicStageView.m */; }; @@ -2595,6 +2596,8 @@ 5412E0FC2C52512100FDD668 /* RoomBottomEntranceModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomBottomEntranceModel.m; sourceTree = ""; }; 541DD9532C1EDEFB00B616C4 /* XPHomePagingViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomePagingViewController.h; sourceTree = ""; }; 541DD9542C1EDEFB00B616C4 /* XPHomePagingViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomePagingViewController.m; sourceTree = ""; }; + 5456F3C62C6EF962000E1805 /* VIPCenterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VIPCenterViewController.h; sourceTree = ""; }; + 5456F3C72C6EF962000E1805 /* VIPCenterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VIPCenterViewController.m; sourceTree = ""; }; 5458319B2C2AE09300364026 /* XPRoomTypeSelectionViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTypeSelectionViewController.h; sourceTree = ""; }; 5458319C2C2AE09300364026 /* XPRoomTypeSelectionViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomTypeSelectionViewController.m; sourceTree = ""; }; 5458319E2C2AEFAF00364026 /* TenMicStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TenMicStageView.h; sourceTree = ""; }; @@ -5585,6 +5588,8 @@ 2331C15E2A5EB71000E1D940 /* XPNobleCenterListViewController.m */, 2331C15F2A5EB71000E1D940 /* XPNobleCenterViewController.h */, 2331C1442A5EB71000E1D940 /* XPNobleCenterViewController.m */, + 5456F3C62C6EF962000E1805 /* VIPCenterViewController.h */, + 5456F3C72C6EF962000E1805 /* VIPCenterViewController.m */, 2331C15C2A5EB71000E1D940 /* XPNobleSettingViewController.h */, 2331C1412A5EB71000E1D940 /* XPNobleSettingViewController.m */, ); @@ -12362,6 +12367,7 @@ 9B6E8577281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m in Sources */, E85E7BC22A4EE82300B6D00A /* XPMineListCell.m in Sources */, E880B3A6278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.m in Sources */, + 5456F3C82C6EF962000E1805 /* VIPCenterViewController.m in Sources */, E8EEB90926FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m in Sources */, E8F1559028125E2D00EE8C06 /* MessageAudioCenter.m in Sources */, E8901CF628B38D89001E9A92 /* XPGraffitiGiftView.m in Sources */, diff --git a/YuMi/Assets.xcassets/5.imageset/5@3x.png b/YuMi/Assets.xcassets/5.imageset/5@3x.png new file mode 100644 index 00000000..054e6cce Binary files /dev/null and b/YuMi/Assets.xcassets/5.imageset/5@3x.png differ diff --git a/YuMi/Assets.xcassets/5.imageset/Contents.json b/YuMi/Assets.xcassets/5.imageset/Contents.json new file mode 100644 index 00000000..21354d0c --- /dev/null +++ b/YuMi/Assets.xcassets/5.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "5@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/Contents.json b/YuMi/Assets.xcassets/Vip Center/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_back_button.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_back_button.imageset/Contents.json new file mode 100644 index 00000000..14bec9c5 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_back_button.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "切图 25@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_back_button.imageset/切图 25@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_back_button.imageset/切图 25@3x.png new file mode 100644 index 00000000..e896adc1 Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_back_button.imageset/切图 25@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_background.imageset/5@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_background.imageset/5@3x.png new file mode 100644 index 00000000..054e6cce Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_background.imageset/5@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_background.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_background.imageset/Contents.json new file mode 100644 index 00000000..21354d0c --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_background.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "5@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_help_button.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_help_button.imageset/Contents.json new file mode 100644 index 00000000..2d60b8b8 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_help_button.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "返回 1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_help_button.imageset/返回 1@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_help_button.imageset/返回 1@3x.png new file mode 100644 index 00000000..880a5b25 Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_help_button.imageset/返回 1@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_identification_card.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_identification_card.imageset/Contents.json new file mode 100644 index 00000000..c930c094 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_identification_card.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "矩形 3048@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_identification_card.imageset/矩形 3048@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_identification_card.imageset/矩形 3048@3x.png new file mode 100644 index 00000000..239f3647 Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_identification_card.imageset/矩形 3048@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_label_decorate.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_label_decorate.imageset/Contents.json new file mode 100644 index 00000000..c3490dd7 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_label_decorate.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "图层 716 拷贝@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_label_decorate.imageset/图层 716 拷贝@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_label_decorate.imageset/图层 716 拷贝@3x.png new file mode 100644 index 00000000..99069455 Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_label_decorate.imageset/图层 716 拷贝@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_1.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_level_1.imageset/Contents.json new file mode 100644 index 00000000..3ae7a983 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_level_1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip_center_level_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_1.imageset/vip_center_level_1@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_level_1.imageset/vip_center_level_1@3x.png new file mode 100644 index 00000000..e3c87bcc Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_level_1.imageset/vip_center_level_1@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_2.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_level_2.imageset/Contents.json new file mode 100644 index 00000000..cc058177 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_level_2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip_center_level_2@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_2.imageset/vip_center_level_2@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_level_2.imageset/vip_center_level_2@3x.png new file mode 100644 index 00000000..ba5153af Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_level_2.imageset/vip_center_level_2@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_3.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_level_3.imageset/Contents.json new file mode 100644 index 00000000..383a7b63 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_level_3.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip_center_level_3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_3.imageset/vip_center_level_3@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_level_3.imageset/vip_center_level_3@3x.png new file mode 100644 index 00000000..bab998b6 Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_level_3.imageset/vip_center_level_3@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_4.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_level_4.imageset/Contents.json new file mode 100644 index 00000000..51ad2d9f --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_level_4.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip_center_level_4@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_4.imageset/vip_center_level_4@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_level_4.imageset/vip_center_level_4@3x.png new file mode 100644 index 00000000..f90abf71 Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_level_4.imageset/vip_center_level_4@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_5.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_level_5.imageset/Contents.json new file mode 100644 index 00000000..954c4178 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_level_5.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip_center_level_5@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_5.imageset/vip_center_level_5@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_level_5.imageset/vip_center_level_5@3x.png new file mode 100644 index 00000000..af179d80 Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_level_5.imageset/vip_center_level_5@3x.png differ diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_6.imageset/Contents.json b/YuMi/Assets.xcassets/Vip Center/vip_center_level_6.imageset/Contents.json new file mode 100644 index 00000000..b24594a2 --- /dev/null +++ b/YuMi/Assets.xcassets/Vip Center/vip_center_level_6.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip_center_level_6@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Vip Center/vip_center_level_6.imageset/vip_center_level_6@3x.png b/YuMi/Assets.xcassets/Vip Center/vip_center_level_6.imageset/vip_center_level_6@3x.png new file mode 100644 index 00000000..20cd9153 Binary files /dev/null and b/YuMi/Assets.xcassets/Vip Center/vip_center_level_6.imageset/vip_center_level_6@3x.png differ diff --git a/YuMi/Global/YUMIMacroUitls.h b/YuMi/Global/YUMIMacroUitls.h index e83a9f57..10571056 100644 --- a/YuMi/Global/YUMIMacroUitls.h +++ b/YuMi/Global/YUMIMacroUitls.h @@ -31,7 +31,6 @@ isPhoneXSeries = [[UIApplication sharedApplication] delegate].window.safeAreaIns #define kHalfScreenHeight KScreenHeight * 0.65 #define kGetScaleWidth(width) kRoundValue(width) #define kRoundValue(value) round(kScreenScale * value) -#define kScreenHeightScale ((CGFloat)KScreenHeight / (CGFloat)812) #define kWeakify(o) try{}@finally{} __weak typeof(o) o##Weak = o; #define kStrongify(o) autoreleasepool{} __strong typeof(o) o = o##Weak; ///keyWindow diff --git a/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.h b/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.h new file mode 100644 index 00000000..bfa1860e --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.h @@ -0,0 +1,16 @@ +// +// VIPCenterViewController.h +// YuMi +// +// Created by P on 2024/8/16. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface VIPCenterViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.m b/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.m new file mode 100644 index 00000000..d9348cb4 --- /dev/null +++ b/YuMi/Modules/YMMine/View/Noble/View/VIPCenterViewController.m @@ -0,0 +1,726 @@ +// +// VIPCenterViewController.m +// YuMi +// +// Created by P on 2024/8/16. +// + +#import "VIPCenterViewController.h" + +#import + +#import "XPWebViewController.h" + +#import "Api+Main.h" +#import "Api+NobleCenter.h" +#import "XPNobleCenterPresenter.h" + +#import "SVGAImageView.h" +#import "TYCyclePagerView.h" + +#import "NobleInfo.h" +#import "UserInfoModel.h" +#import "WalletInfoModel.h" +#import "NobleCenterModel.h" +#import "RechargeListModel.h" + + +@interface VIPIdentificationCard : UIView + +@property (nonatomic, strong) NetImageView *imageView; +@property (nonatomic, strong) UILabel *titleLabel; + +- (void)updateTitle:(NSString *)title; +- (void)updateImage:(NSString *)imagePath; + +@end + +@implementation VIPIdentificationCard + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + UIImageView *bg = [[UIImageView alloc] initWithImage:kImage(@"vip_center_identification_card")]; + [self addSubview:bg]; + [bg mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self addSubview:self.imageView]; + [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.leading.right.mas_equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(90)); + }]; + + [self addSubview:self.titleLabel]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.bottom.mas_equalTo(-13); + }]; + } + return self; +} + +- (void)updateTitle:(NSString *)title { + self.titleLabel.text = title; +} + +- (void)updateImage:(NSString *)imagePath { + self.imageView.imageUrl = imagePath; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [UILabel labelInitWithText:@"" + font:kFontRegular(13) + textColor:[DJDKMIMOMColor colorWithHexString:@"#FFE3AF"]]; + } + return _titleLabel; +} + +- (NetImageView *)imageView { + if (!_imageView) { + _imageView = [[NetImageView alloc] init]; + _imageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _imageView; +} + +@end + +@interface VIPCardCyclePagerCell : UICollectionViewCell + +@property (nonatomic, assign) NSInteger cellIndex; +@property (nonatomic, copy) NSString *placeHolderPath; +@property (nonatomic, copy) NSString *svgaPath; + +@property (nonatomic, strong) UIImageView *levelBgImageView; +@property (nonatomic, strong) UILabel *statusLabel; +@property (nonatomic, strong) NetImageView *placeHolderImageView; +@property (nonatomic, strong) SVGAImageView *svgaImageView; + +@end + +@implementation VIPCardCyclePagerCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self setupCell]; + } + return self; +} + +- (void)setupCell { + _levelBgImageView = [[UIImageView alloc] init]; + [self.contentView addSubview:_levelBgImageView]; + [_levelBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + + _statusLabel = [UILabel labelInitWithText:@"" + font:kFontMedium(12) + textColor:[DJDKMIMOMColor colorWithHexString:@"#4d1c1c"]]; + [self.contentView addSubview:_statusLabel]; + [_statusLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(18); + make.bottom.mas_equalTo(-26); + make.height.mas_equalTo(18); + }]; + + _placeHolderImageView = [[NetImageView alloc] init]; + _placeHolderImageView.contentMode = UIViewContentModeScaleAspectFill; + [self.contentView addSubview:_placeHolderImageView]; + [_placeHolderImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-13); + make.bottom.mas_equalTo(-25); + make.width.height.mas_equalTo(kGetScaleWidth(130)); + }]; + + _svgaImageView = [[SVGAImageView alloc] init]; + _svgaImageView.clearsAfterStop = NO; + _svgaImageView.loops = INT_MAX; + _svgaImageView.contentMode = UIViewContentModeScaleAspectFill; + [self.contentView addSubview:_svgaImageView]; + [_svgaImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.placeHolderImageView); + }]; +} + +- (void)setCellIndex:(NSInteger)cellIndex { + _cellIndex = cellIndex; + NSString *imageName = [NSString stringWithFormat:@"vip_center_level_%ld", (long)(cellIndex+1)]; + [self.levelBgImageView setImage:kImage(imageName)]; +} + +- (void)setPlaceHolderPath:(NSString *)placeHolderPath { + _placeHolderPath = placeHolderPath; + _placeHolderImageView.imageUrl = placeHolderPath; +} + +- (void)setSvgaPath:(NSString *)svgaPath { + _svgaPath = svgaPath; + if (svgaPath.length == 0) { + return; + } + @kWeakify(self); + SVGAParser *parser = [[SVGAParser alloc] init]; + [parser parseWithURL:[NSURL URLWithString:svgaPath] + completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { + @kStrongify(self); + self.svgaImageView.videoItem = videoItem; + [self.svgaImageView startAnimation]; + self.placeHolderImageView.hidden = YES; + } + failureBlock:^(NSError * _Nullable error) {}]; +} + +@end + + +@interface VIPCenterViewController () + +@property (nonatomic, strong) UIButton *backButton; +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UIButton *helpButton; + +@property (nonatomic, strong) TYCyclePagerView *vipCardCyclePager; + +@property (nonatomic, strong) UIView *headerContentView; +@property (nonatomic, strong) UIScrollView *mainScrollView; +@property (nonatomic, strong) UIView *scrollContentView; + +@property (nonatomic, strong) NobleCenterModel *vipModel; +@property (nonatomic, strong) UserInfoModel *userInfo; +@property (nonatomic, strong) WalletInfoModel *walletInfo; +@property (nonatomic, copy) NSArray *rechargeList; + +@property (nonatomic, strong) UIStackView *identificationStack; +@property (nonatomic, strong) VIPIdentificationCard *identificationCard_vipIdentity; +@property (nonatomic, strong) VIPIdentificationCard *identificationCard_roomCard; +@property (nonatomic, strong) VIPIdentificationCard *identificationCard_entryAnimation; +@property (nonatomic, strong) VIPIdentificationCard *identificationCard_exclusiveHeadwear; +@property (nonatomic, strong) VIPIdentificationCard *identificationCard_micSoundWave; +@property (nonatomic, strong) VIPIdentificationCard *identificationCard_exclusiveBubbles; + +@property (nonatomic, strong) UIStackView *exclusivePrivilegesStack; + +@end + +@implementation VIPCenterViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + [self setupUI]; + [self setupData]; +} + +- (XPNobleCenterPresenter *)createPresenter { + return [[XPNobleCenterPresenter alloc] init]; +} + +#pragma mark - Setup +- (void)setupUI { + [self setupBG]; + [self setupNavigationBar]; + [self setupVIPCardCyclePager]; + + [self setupScrollContent]; + [self setupVipIdentificationArea]; + [self setupExclusivePrivilegesArea]; +} + +- (void)setupBG { + self.view.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"#150c00"]; + + UIImageView *bgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"vip_center_background"]]; + [self.view addSubview:bgImageView]; + [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.leading.trailing.mas_equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(350)); + }]; +} + +- (void)setupVIPCardCyclePager { + [self.view addSubview:self.vipCardCyclePager]; + [self.vipCardCyclePager mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(11); + make.leading.trailing.mas_equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(136 + 36 + 51)); + }]; +} + +- (void)setupNavigationBar { + [self.view addSubview:self.titleLabel]; + [self.view addSubview:self.backButton]; + [self.view addSubview:self.helpButton]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(self.view).offset(44 + 11); + make.height.mas_equalTo(22); + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.view).offset(16); + make.centerY.mas_equalTo(self.titleLabel); + make.size.mas_equalTo(CGSizeMake(22, 22)); + }]; + + [self.helpButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(self.view).offset(-16); + make.centerY.mas_equalTo(self.titleLabel); + make.size.mas_equalTo(CGSizeMake(22, 22)); + }]; +} + +- (void)setupScrollContent { + [self.view addSubview:self.mainScrollView]; + [self.mainScrollView addSubview:self.scrollContentView]; + + [self.mainScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.leading.trailing.mas_equalTo(self.view); + make.top.mas_equalTo(self.vipCardCyclePager.mas_bottom); + }]; + + [self.scrollContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.mainScrollView); + make.width.mas_equalTo(self.mainScrollView); + }]; + +// UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 1000)]; +// CAGradientLayer *gradientLayer = [CAGradientLayer layer]; +// gradientLayer.startPoint = CGPointMake(0.5, 0.0); +// gradientLayer.endPoint = CGPointMake(0.5, 1.0); +// gradientLayer.colors = @[ +// (id)[UIColor redColor].CGColor, +// (id)[UIColor blueColor].CGColor +// ]; +// gradientLayer.frame = self.view.bounds; +// [v.layer insertSublayer:gradientLayer atIndex:0]; +// [self.scrollContentView addSubview:v]; +// +// UILabel *label2 = [[UILabel alloc] init]; +// label2.text = @"Label 2"; +// label2.backgroundColor = [UIColor greenColor]; +// [self.scrollContentView addSubview:label2]; +// +// [v mas_makeConstraints:^(MASConstraintMaker *make) { +// make.top.leading.trailing.mas_equalTo(self.scrollContentView); +// make.height.mas_equalTo(1000); +// }]; +// +// [label2 mas_makeConstraints:^(MASConstraintMaker *make) { +// make.top.equalTo(v.mas_bottom).offset(20); // 距离 label1 底部 20 +// make.left.right.equalTo(self.scrollContentView).insets(UIEdgeInsetsMake(0, 20, 0, 20)); // 左右边距 20 +// make.height.mas_equalTo(50); // 高度 50 +// make.bottom.equalTo(self.scrollContentView).offset(-20); // 保证 contentView 高度,底部距离 contentView 底部 20 +// }]; + + +} + +- (void)setupVipIdentificationArea { + UILabel *titleLabel = [UILabel labelInitWithText:@"Identification" + font:kFontBold(16) + textColor:[DJDKMIMOMColor colorWithHexString:@"#FFE3AF"]]; + [self.scrollContentView addSubview:titleLabel]; + [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerX.mas_equalTo(self.scrollContentView); + make.height.mas_equalTo(22); + }]; + + UIImageView *leftDecorateImageView = [[UIImageView alloc] initWithImage:kImage(@"vip_center_label_decorate")]; + [self.scrollContentView addSubview:leftDecorateImageView]; + [leftDecorateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(titleLabel); + make.trailing.mas_equalTo(titleLabel.mas_leading).offset(-12); + make.size.mas_equalTo(CGSizeMake(43, 16)); + }]; + + UIImageView *rightDecorateImageView = [[UIImageView alloc] initWithImage:kImage(@"vip_center_label_decorate")]; + rightDecorateImageView.transform = CGAffineTransformMakeScale(-1.0, 1.0); + [self.scrollContentView addSubview:rightDecorateImageView]; + [rightDecorateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(titleLabel); + make.leading.mas_equalTo(titleLabel.mas_trailing).offset(12); + make.size.mas_equalTo(CGSizeMake(43, 16)); + }]; + + UIStackView *identificationStack = [[UIStackView alloc] init]; + identificationStack.spacing = 12; + identificationStack.distribution = UIStackViewDistributionEqualSpacing; + [self.scrollContentView addSubview:identificationStack]; + [identificationStack mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(titleLabel.mas_bottom).offset(16); + make.leading.mas_equalTo(self.scrollContentView).offset(16); + make.trailing.mas_equalTo(self.scrollContentView).offset(-16); +// make.bottom.mas_equalTo(self.scrollContentView); + }]; + _identificationStack = identificationStack; + + UIStackView *identificationStack_left = [[UIStackView alloc] init]; + identificationStack_left.axis = UILayoutConstraintAxisVertical; + identificationStack_left.spacing = 12; + UIStackView *identificationStack_right = [[UIStackView alloc] init]; + identificationStack_right.axis = UILayoutConstraintAxisVertical; + identificationStack_right.spacing = 12; + [identificationStack addArrangedSubview:identificationStack_left]; + [identificationStack addArrangedSubview:identificationStack_right]; + + [identificationStack_left addArrangedSubview:self.identificationCard_vipIdentity]; + [identificationStack_left addArrangedSubview:self.identificationCard_entryAnimation]; + [identificationStack_left addArrangedSubview:self.identificationCard_micSoundWave]; + + [identificationStack_right addArrangedSubview:self.identificationCard_roomCard]; + [identificationStack_right addArrangedSubview:self.identificationCard_exclusiveHeadwear]; + [identificationStack_right addArrangedSubview:self.identificationCard_exclusiveBubbles]; + + [self.identificationCard_vipIdentity mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(166), kGetScaleWidth(120))); + }]; + [self.identificationCard_entryAnimation mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(166), kGetScaleWidth(120))); + }]; + [self.identificationCard_micSoundWave mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(166), kGetScaleWidth(120))); + }]; + [self.identificationCard_roomCard mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(166), kGetScaleWidth(120))); + }]; + [self.identificationCard_exclusiveHeadwear mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(166), kGetScaleWidth(120))); + }]; + [self.identificationCard_exclusiveBubbles mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(166), kGetScaleWidth(120))); + }]; +} + +- (void)setupExclusivePrivilegesArea { + UILabel *titleLabel = [UILabel labelInitWithText:@"Exclusive Privileges" + font:kFontBold(16) + textColor:[DJDKMIMOMColor colorWithHexString:@"#FFE3AF"]]; + [self.scrollContentView addSubview:titleLabel]; + [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.identificationStack.mas_bottom).offset(24); + make.centerX.mas_equalTo(self.identificationStack); + make.height.mas_equalTo(22); + }]; + + UIImageView *leftDecorateImageView = [[UIImageView alloc] initWithImage:kImage(@"vip_center_label_decorate")]; + [self.scrollContentView addSubview:leftDecorateImageView]; + [leftDecorateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(titleLabel); + make.trailing.mas_equalTo(titleLabel.mas_leading).offset(-12); + make.size.mas_equalTo(CGSizeMake(43, 16)); + }]; + + UIImageView *rightDecorateImageView = [[UIImageView alloc] initWithImage:kImage(@"vip_center_label_decorate")]; + rightDecorateImageView.transform = CGAffineTransformMakeScale(-1.0, 1.0); + [self.scrollContentView addSubview:rightDecorateImageView]; + [rightDecorateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(titleLabel); + make.leading.mas_equalTo(titleLabel.mas_trailing).offset(12); + make.size.mas_equalTo(CGSizeMake(43, 16)); + }]; + + + self.exclusivePrivilegesStack = [[UIStackView alloc] init]; + self.exclusivePrivilegesStack.axis = UILayoutConstraintAxisVertical; // 垂直排列 + self.exclusivePrivilegesStack.distribution = UIStackViewDistributionEqualSpacing; + self.exclusivePrivilegesStack.spacing = 10; // 行间距 + + [self.scrollContentView addSubview:self.exclusivePrivilegesStack]; + [self.exclusivePrivilegesStack mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(titleLabel.mas_bottom); + make.leading.trailing.mas_equalTo(self.scrollContentView); + make.bottom.mas_equalTo(self.scrollContentView).offset(-40); + }]; + + + +// UIView *bottomV = [[UIView alloc] init]; +// [self.scrollContentView addSubview:bottomV]; +// [bottomV mas_makeConstraints:^(MASConstraintMaker *make) { +// make.top.mas_equalTo(titleLabel.mas_bottom); +// make.height.width.mas_equalTo(100); +// make.bottom.mas_equalTo(self.scrollContentView).offset(-20); +// }]; +} + +- (void)configVIPCards { + [self.vipCardCyclePager reloadData]; +} + +- (void)configIdentificationCards { + for (NobleAuthInfo *info in self.vipModel.vipAuthInfos) { + switch (info.authType) { + case 1: + [self.identificationCard_vipIdentity updateImage:info.descPic]; + [self.identificationCard_vipIdentity updateTitle:info.authName]; + break; + case 5: + [self.identificationCard_roomCard updateImage:info.descPic]; + [self.identificationCard_roomCard updateTitle:info.authName]; + break; + case 11: + [self.identificationCard_exclusiveBubbles updateImage:info.descPic]; + [self.identificationCard_exclusiveBubbles updateTitle:info.authName]; + break; +// case 4: // 没有头饰 +// [self.identificationCard_exclusiveHeadwear updateImage:info.descPic]; +// [self.identificationCard_exclusiveHeadwear updateTitle:info.authName]; +// break; + case 8: + [self.identificationCard_micSoundWave updateImage:info.descPic]; + [self.identificationCard_micSoundWave updateTitle:info.authName]; + break; + case 12: + [self.identificationCard_entryAnimation updateImage:info.descPic]; + [self.identificationCard_entryAnimation updateTitle:info.authName]; + break; + + default: + break; + } + } +} + +- (void)configExclusivePrivilegesArea { + int itemsPerRow = 3; + + for (int row = 0; row < (self.vipModel.vipAuthInfos.count + itemsPerRow - 1)/itemsPerRow; row++) { + UIStackView *horizontalStackView = [[UIStackView alloc] init]; + horizontalStackView.axis = UILayoutConstraintAxisHorizontal; // 水平排列 + horizontalStackView.distribution = UIStackViewDistributionFillEqually; + horizontalStackView.spacing = 60; + + for (int col = 0; col < itemsPerRow; col++) { + int index = row * itemsPerRow + col; + if (index < self.vipModel.vipAuthInfos.count) { + UIView *v = [[UIView alloc] init]; + v.backgroundColor = [UIColor whiteColor]; + + [horizontalStackView addArrangedSubview:v]; + [v mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(48); + }]; + } else { + // 如果剩余数量不足一行,则添加一个透明的占位视图 + UIView *placeholderView = [[UIView alloc] init]; + placeholderView.backgroundColor = [UIColor clearColor]; + [horizontalStackView addArrangedSubview:placeholderView]; + } + } + + [self.exclusivePrivilegesStack addArrangedSubview:horizontalStackView]; + } +} + +#pragma mark - Load Data from API +- (void)setupData { + [self loadUserInfo]; + [self loadWalletInfo]; + [self loadVIPProductsInfo]; +} + +- (void)loadUserInfo { + NSString * uid = [[AccountInfoStorage instance] getUid]; + @kWeakify(self); + [Api getUserInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); + if (code == 200) { + UserInfoModel *infoModel = [UserInfoModel modelWithDictionary:data.data]; + self.userInfo = infoModel; + [self loadVIPCenterInfo]; + } + } uid:uid]; +} + +- (void)loadVIPProductsInfo { + @kWeakify(self); + [Api getChargeList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); + if(code == 200){ + NSArray *list = [RechargeListModel modelsWithArray:data.data]; + self.rechargeList = list; + } + } type:@"9"]; +} + +- (void)loadWalletInfo { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + @kWeakify(self); + [Api getUserWalletInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); + if(code == 200){ + WalletInfoModel *infoModel = [WalletInfoModel modelWithDictionary:data.data]; + self.walletInfo = infoModel; + } + } uid:uid ticket:ticket]; +} + +- (void)loadVIPCenterInfo { + @kWeakify(self); + [Api nobleCenterLevelList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); + if (code == 200) { + NobleCenterModel *model = [NobleCenterModel modelWithDictionary:data.data]; + self.vipModel = model; + [self configVIPCards]; + [self configIdentificationCards]; + [self configExclusivePrivilegesArea]; + } + }]; +} + +#pragma mark - Button Actions +- (void)didTapBackButton { + [self.navigationController popViewControllerAnimated:YES]; +} + +- (void)didTapHelpButton { + XPWebViewController * webVC =[[XPWebViewController alloc] init]; + webVC.url = URLWithType(kNobleRuleURL); + [self.navigationController pushViewController:webVC animated:YES]; +} + +#pragma mark - API Response + + +#pragma mark - TYCyclePagerView Delegate & DataSource +- (NSInteger)numberOfItemsInPagerView:(TYCyclePagerView *)pageView { + return 9; +} + +- (TYCyclePagerViewLayout *)layoutForPagerView:(TYCyclePagerView *)pageView { + TYCyclePagerViewLayout *layout = [[TYCyclePagerViewLayout alloc]init]; + layout.layoutType = TYCyclePagerTransformLayoutLinear; + layout.itemSize = CGSizeMake(kGetScaleWidth(320), kGetScaleWidth(136)); + layout.itemSpacing = 15; + return layout; +} + +- (__kindof UICollectionViewCell *)pagerView:(TYCyclePagerView *)pagerView + cellForItemAtIndex:(NSInteger)index { + VIPCardCyclePagerCell *cell = [pagerView dequeueReusableCellWithReuseIdentifier:@"VIPCardCyclePagerCell" forIndex:index]; + cell.cellIndex = index; + if (self.vipModel) { + NobleInfo *info = [self.vipModel.vipInfos xpSafeObjectAtIndex:index]; + if (info) { + cell.placeHolderPath = info.vipIcon; + cell.svgaPath = info.vipLogo; + } + } + return cell; +} + + +#pragma mark - properties + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_backButton setImage:[kImage(@"vip_center_back_button") ms_SetImageForRTL] + forState:UIControlStateNormal]; + [_backButton addTarget:self + action:@selector(didTapBackButton) + forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (UIButton *)helpButton { + if (!_helpButton) { + _helpButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_helpButton setImage:kImage(@"vip_center_help_button") + forState:UIControlStateNormal]; + [_helpButton addTarget:self + action:@selector(didTapHelpButton) + forControlEvents:UIControlEventTouchUpInside]; + } + return _helpButton; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _titleLabel.text = YMLocalizedString(@"XPNobleCenterNavView0"); + _titleLabel.textColor = [DJDKMIMOMColor colorWithHexString:@"#FFE3AF"]; + } + return _titleLabel; +} + +- (TYCyclePagerView *)vipCardCyclePager { + if (!_vipCardCyclePager) { + _vipCardCyclePager = [[TYCyclePagerView alloc] init]; + _vipCardCyclePager.backgroundColor = [UIColor clearColor]; + _vipCardCyclePager.backgroundView = nil; + _vipCardCyclePager.layer.borderWidth = 1; + _vipCardCyclePager.isInfiniteLoop = NO; + _vipCardCyclePager.autoScrollInterval = -1; + _vipCardCyclePager.dataSource = self; + _vipCardCyclePager.delegate = self; + [_vipCardCyclePager registerClass:[VIPCardCyclePagerCell class] + forCellWithReuseIdentifier:@"VIPCardCyclePagerCell"]; + } + return _vipCardCyclePager; +} + +- (UIScrollView *)mainScrollView { + if (!_mainScrollView) { + _mainScrollView = [[UIScrollView alloc] init]; + } + return _mainScrollView; +} + +- (UIView *)scrollContentView { + if (!_scrollContentView) { + _scrollContentView = [[UIView alloc] init]; + } + return _scrollContentView; +} + +- (VIPIdentificationCard *)identificationCard_vipIdentity { + if (!_identificationCard_vipIdentity) { + _identificationCard_vipIdentity = [[VIPIdentificationCard alloc] initWithFrame:CGRectMake(0, 0, kGetScaleWidth(166), kGetScaleWidth(120))]; + } + return _identificationCard_vipIdentity; +} +- (VIPIdentificationCard *)identificationCard_roomCard { + if (!_identificationCard_roomCard) { + _identificationCard_roomCard = [[VIPIdentificationCard alloc] initWithFrame:CGRectMake(0, 0, kGetScaleWidth(166), kGetScaleWidth(120))]; + } + return _identificationCard_roomCard; +} +- (VIPIdentificationCard *)identificationCard_entryAnimation { + if (!_identificationCard_entryAnimation) { + _identificationCard_entryAnimation = [[VIPIdentificationCard alloc] initWithFrame:CGRectMake(0, 0, kGetScaleWidth(166), kGetScaleWidth(120))]; + } + return _identificationCard_entryAnimation; +} +- (VIPIdentificationCard *)identificationCard_exclusiveHeadwear { + if (!_identificationCard_exclusiveHeadwear) { + _identificationCard_exclusiveHeadwear = [[VIPIdentificationCard alloc] initWithFrame:CGRectMake(0, 0, kGetScaleWidth(166), kGetScaleWidth(120))]; + } + return _identificationCard_exclusiveHeadwear; +} +- (VIPIdentificationCard *)identificationCard_micSoundWave { + if (!_identificationCard_micSoundWave) { + _identificationCard_micSoundWave = [[VIPIdentificationCard alloc] initWithFrame:CGRectMake(0, 0, kGetScaleWidth(166), kGetScaleWidth(120))]; + } + return _identificationCard_micSoundWave; +} +- (VIPIdentificationCard *)identificationCard_exclusiveBubbles { + if (!_identificationCard_exclusiveBubbles) { + _identificationCard_exclusiveBubbles = [[VIPIdentificationCard alloc] initWithFrame:CGRectMake(0, 0, kGetScaleWidth(166), kGetScaleWidth(120))]; + } + return _identificationCard_exclusiveBubbles; +} +@end diff --git a/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.m b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.m index 75863da2..059231c1 100644 --- a/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.m +++ b/YuMi/Modules/YMMine/View/Noble/View/XPNobleCenterViewController.m @@ -208,10 +208,7 @@ [self.presenter openVipWithDiamondRoomUid:roomUid vipLevel:vipLevel]; return; } - - - - + [XNDJTDDLoadingTool showOnlyView:kWindow]; [self.presenter requestNobleIAPRechargeOrderWithChargeProdId:self.rechargeModel.chargeProdId roomUid:self.roomUid ? [NSString stringWithFormat:@"%zd", self.roomUid] : nil]; } @@ -378,7 +375,6 @@ [self.myNobleView mas_updateConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(91+kSafeAreaBottomHeight); }]; - } } diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m index fa3f2451..286518b1 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m @@ -1714,8 +1714,6 @@ [self createBigPrizeAnimation:prizeModel]; } [self.animationListB addObject:prizeModel]; - - } diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.m index 739e96b7..c8510019 100644 --- a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.m +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroWaveView.m @@ -100,8 +100,6 @@ [view.layer pop_addAnimation:animation2 forKey:@"animation2"]; [view.layer pop_addAnimation:animation3 forKey:@"animation3"]; [view.layer pop_addAnimation:animation4 forKey:@"animation4"]; - - } #pragma mark - Getters And Setters - (UIView *)firstView {