From 942fc0639e88a1808dcca26f2a3140f97547bd9b Mon Sep 17 00:00:00 2001 From: fengshuo <963787902@qq.com> Date: Wed, 7 Dec 2022 15:05:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E6=A4=8D=E5=8D=81=E4=BA=8C=E6=98=9F?= =?UTF-8?q?=E4=B8=BB=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xplan-ios.xcodeproj/project.pbxproj | 12 + .../Contents.json | 22 ++ .../gift_constellationBanner_bg@2x.png | Bin 0 -> 18108 bytes .../gift_constellationBanner_bg@3x.png | Bin 0 -> 35814 bytes xplan-ios/Global/XPHtmlUrl.h | 2 + xplan-ios/Global/XPHtmlUrl.m | 3 +- .../ModuleKit/SendGiftView/Api/Api+Gift.h | 3 + .../ModuleKit/SendGiftView/Api/Api+Gift.m | 9 +- .../Model/GiftTwelveStarFirstModel.h | 23 ++ .../Model/GiftTwelveStarFirstModel.m | 12 + .../SendGiftView/Presenter/XPGiftPresenter.h | 3 + .../SendGiftView/Presenter/XPGiftPresenter.m | 9 + .../SendGiftView/Protocol/XPGiftProtocol.h | 5 +- .../SendGiftView/View/XPGiftInfoView.h | 3 - .../SendGiftView/View/XPGiftInfoView.m | 7 +- .../View/XPGiftTwelveStarBroadcastView.h | 27 ++ .../View/XPGiftTwelveStarBroadcastView.m | 248 ++++++++++++++++++ .../SendGiftView/View/XPSendGiftView.m | 100 ++++--- 18 files changed, 434 insertions(+), 54 deletions(-) create mode 100644 xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@2x.png create mode 100644 xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@3x.png create mode 100644 xplan-ios/Main/ModuleKit/SendGiftView/Model/GiftTwelveStarFirstModel.h create mode 100644 xplan-ios/Main/ModuleKit/SendGiftView/Model/GiftTwelveStarFirstModel.m create mode 100644 xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftTwelveStarBroadcastView.h create mode 100644 xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftTwelveStarBroadcastView.m diff --git a/xplan-ios.xcodeproj/project.pbxproj b/xplan-ios.xcodeproj/project.pbxproj index 4a91f891..d9ef16ee 100644 --- a/xplan-ios.xcodeproj/project.pbxproj +++ b/xplan-ios.xcodeproj/project.pbxproj @@ -1122,6 +1122,8 @@ E8D48250278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4824F278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m */; }; E8D48253278D8228003C1D08 /* AcrossRoomPKPanelModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48252278D8228003C1D08 /* AcrossRoomPKPanelModel.m */; }; E8D48256278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48255278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.m */; }; + E8D4DE442940462C00EC788D /* XPGiftTwelveStarBroadcastView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4DE432940462C00EC788D /* XPGiftTwelveStarBroadcastView.m */; }; + E8D4DE472940473500EC788D /* GiftTwelveStarFirstModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4DE462940473500EC788D /* GiftTwelveStarFirstModel.m */; }; E8D55C9D28113218006935A5 /* MessageMenuModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D55C9C28113218006935A5 /* MessageMenuModel.m */; }; E8D55CA0281186D6006935A5 /* SessionAudioRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D55C9F281186D6006935A5 /* SessionAudioRecordView.m */; }; E8D7D74B282BA1EC0007D7BD /* XPMonentsTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D7D74A282BA1EC0007D7BD /* XPMonentsTableViewCell.m */; }; @@ -3330,6 +3332,10 @@ E8D48252278D8228003C1D08 /* AcrossRoomPKPanelModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AcrossRoomPKPanelModel.m; sourceTree = ""; }; E8D48254278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKPanelUserView.h; sourceTree = ""; }; E8D48255278D83AE003C1D08 /* XPAcrossRoomPKPanelUserView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKPanelUserView.m; sourceTree = ""; }; + E8D4DE422940462C00EC788D /* XPGiftTwelveStarBroadcastView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftTwelveStarBroadcastView.h; sourceTree = ""; }; + E8D4DE432940462C00EC788D /* XPGiftTwelveStarBroadcastView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftTwelveStarBroadcastView.m; sourceTree = ""; }; + E8D4DE452940473500EC788D /* GiftTwelveStarFirstModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftTwelveStarFirstModel.h; sourceTree = ""; }; + E8D4DE462940473500EC788D /* GiftTwelveStarFirstModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiftTwelveStarFirstModel.m; sourceTree = ""; }; E8D55C9B28113218006935A5 /* MessageMenuModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageMenuModel.h; sourceTree = ""; }; E8D55C9C28113218006935A5 /* MessageMenuModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageMenuModel.m; sourceTree = ""; }; E8D55C9E281186D6006935A5 /* SessionAudioRecordView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SessionAudioRecordView.h; sourceTree = ""; }; @@ -6860,6 +6866,8 @@ 9B41D36D282649230048C588 /* XPWeekStarRankUserModel.m */, E8A3538328FD67320014A784 /* GiftLuckyBroadcastModel.h */, E8A3538428FD67320014A784 /* GiftLuckyBroadcastModel.m */, + E8D4DE452940473500EC788D /* GiftTwelveStarFirstModel.h */, + E8D4DE462940473500EC788D /* GiftTwelveStarFirstModel.m */, ); path = Model; sourceTree = ""; @@ -6895,6 +6903,8 @@ 9B4D449228F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m */, 9B4D449428F15EE7002572D5 /* XPGiftWeekStarBroadcastView.h */, 9B4D449528F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m */, + E8D4DE422940462C00EC788D /* XPGiftTwelveStarBroadcastView.h */, + E8D4DE432940462C00EC788D /* XPGiftTwelveStarBroadcastView.m */, ); path = View; sourceTree = ""; @@ -10113,6 +10123,7 @@ E878894C273A607C00BF1D57 /* XPGiftUserCollectionViewCell.m in Sources */, 181D7F212727D9DB00B7C059 /* SocialStageView.m in Sources */, E8AB630D28ADD8C60023B0D2 /* XPMonentTopicContainerViewController.m in Sources */, + E8D4DE472940473500EC788D /* GiftTwelveStarFirstModel.m in Sources */, E8A1F7A2290689170099C952 /* XPNobleRankTableViewCell.m in Sources */, 187EEEF026E89FE8002833B2 /* AccountInfoStorage.m in Sources */, 9BFE0D8E2898C8C300F53C24 /* XPAnchorCardSkillCollectionViewCell.m in Sources */, @@ -10311,6 +10322,7 @@ E87E91522796A15500A7B3F2 /* MicroExtModel.m in Sources */, E8788948273A55D000BF1D57 /* XPGiftBarView.m in Sources */, E89DCF5728FFF076001647EC /* XPWishGiftEmptyTableViewCell.m in Sources */, + E8D4DE442940462C00EC788D /* XPGiftTwelveStarBroadcastView.m in Sources */, 9BA8A47227C5D590000365A3 /* XPVoiceCardCircleLayer.m in Sources */, E81A65422835120200F55894 /* XPMonentsInteractivePresenter.m in Sources */, 9B33E3D427D8A1A4003B0E62 /* XPSkillCardPlayerManager.m in Sources */, diff --git a/xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/Contents.json b/xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/Contents.json new file mode 100644 index 00000000..abce1bf7 --- /dev/null +++ b/xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_constellationBanner_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_constellationBanner_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@2x.png b/xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..07bf4002d615038578c578a19d2cc3f41e9d35b3 GIT binary patch literal 18108 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 b#XJ81W%&TF^)SZ600000NkvXXu0mjf4_(#E literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@3x.png b/xplan-ios/Assets.xcassets/Gift/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..392f0d4b604eccf17d85af591085622fa9395f67 GIT binary patch literal 35814 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%0AN2#q zODDx*l1A|sv|t>xwv8TouhBma-_5#niIXh_bkVSN4Xu(y5L^ z3ev(SIK`x_VAH90Wf>)O*(_Sb9h_cR6mk}4?Kqo-k`{t1V%j2cd#{1LdNHzJG89%8 znk+n9AP_NaVb_FUVPt`Gq$XT}NZ&A~xM0x~=FL@3uP{|XSplwaqT;~rc`(KQ!Mgq4 zKu&Ezdlu<}gh7eHruA>hXaQ6Nev&Q76*X1Z_|YUQTCQM#hJ=MDi~jR0`tLd|1tC&e zluD;PHj{PJ*>$Rv zMSL?d6tk#?7+bI61O>|_gclGzZ8Q9~9>pPIEAE8L!5?+LBaT^pjG z6IfYI^ZrQ`wXAq@6aj~?nI7D>Mqq}~$ZzV-<+X_@3geAWT&Oz*Mab4&aU=LAxDhH{ zh&#bZK?SK=UsZ~V;tMw#>_()ByB0ynuA3}OGK)ZBM>;`~28#))=q{u!_>x& z6Tq*W%0gMMy%kI430(1h>D0qV2^Z6=itbYY*>XFC1&f|OwJeKm!WyH6=ud7!oO-bf z^%m$m^c|N1XE+$8g79S#^$`n=Lp#@D=Q@lKU8b0Z9n~hBxP4CX8rO}2oni*odPeCK zlKjLI1pnd;S_N&KUBDs(2gV)KV#jclV8GISRJs{Pt(OIbPA>}d1NcFK&nzr*pLcL8 z%vJLY!{lbfGB_6X6oLWf3BiB~R5hii*xl;gdfYk2BcCY>lNo;O^TxyP8MtOaCgk^a zR+D8gshS0tcnj32yLzpC;MQa9C2UV8_o9gk@Ud!(6>;> z!|h`FShmy7<;&nb8Xx*Z4xm@O)%(XQP^+(zk*PNVH(80~(YxoOdIVLf8y3}-G5RJ0 zx@{H5iZ>124(O`VEmsBCg$VBGViY!Xg8@m8C_yrem~uu+R~*J zU3o*%npZsSmUjeXU#?skCl|bOv7%ipwr!gajGGPRxfzOwULb2iebE#R18D_yDjv3m2rNyrX+bQA z`^O?(Y(hO#Fh%PDDTdN$p`;ay<0r?n3?V8EQ5d{hD>GU%2%3db48IrXSg40xP3kOnk_dZPM;!v%Iirwu-}nwy>@LBp0;WB=(-bxy8Qlbyj@)ca;+(m8>=j-_{G_{(D9%&$oN)2_$d!$9T3JgzTZ;-0QQIfC3IHd}5 z#TQ+35ETTy8o%Iff;XCqXOU6D(bRk+N;Fh+YK|&kM=2pKSQMt92MK11ZWTr1o@i>( zjV2?4yivj;IGRb3Lf=-_BQRc2d8zYdyS?-+lRY-=w~Fs*72}seS2j=M|N3-)-)6C8 z?*Ml=+Y?yiB6VSi?ZWIATtf@}B7=TG@=Q{Qh+U4PNjJ)3N*7+zMLaD%(iH58RR0~ zxN%e2lTM%Aw==ku@3>sM2=|La+0OD}8`$f}oDvf=m7L!YGgDBBSb&g4l9KZSrU-^L z@rC*q{1E*G3kgf=LHtGTAH|#WX*y>2(U#D$ZRzYF<4!Fqlr`Bb)z(E&YGmJA)Oq zfiRAL#>A{`ao0-%^%8Rvl;#pdbJ|M{UW7~s>846|sfe%&KFn^xhv~IXvhUGvk{z3* zGubYy=wW^!{#4M(bn7-NF% z2f}lLC&g~L?n4GMau8a96H%KiVjZ;Di7Z3QY+ANrd4Yk!5+jot=|*M>h2l{BMtDr{ zpkPU{+U}F0Vj2xw1Cu(=Vp4_Eq2q_w*#d)j8p{cOHPTsrWr2Y_ArDUv3WefmV2dG- z$PQU{?ls^TA1QH211k2UWx%P?V+V<=P>X03Tj?WeSmZwc}E7xrFS z0D8l^JdZU+j*59{d7hcBEN0Y3iDt8x&O3Ij5 sIInqeJ7im?T=>euoY2^7RN;X90jcd6I(Q8j5dZ)H07*qoM6N<$f-CGl9smFU literal 0 HcmV?d00001 diff --git a/xplan-ios/Global/XPHtmlUrl.h b/xplan-ios/Global/XPHtmlUrl.h index d0f2f392..05b02d19 100644 --- a/xplan-ios/Global/XPHtmlUrl.h +++ b/xplan-ios/Global/XPHtmlUrl.h @@ -82,6 +82,8 @@ typedef NS_ENUM(NSUInteger, URLType) { kMonentsShareURL, ///红包规则 kRedPacketRuleURL, + ///星座入口 + kXinZuoStarURL, }; NSString * const URLWithType(URLType type); diff --git a/xplan-ios/Global/XPHtmlUrl.m b/xplan-ios/Global/XPHtmlUrl.m index b54576eb..126e03e1 100644 --- a/xplan-ios/Global/XPHtmlUrl.m +++ b/xplan-ios/Global/XPHtmlUrl.m @@ -52,7 +52,8 @@ NSString * const URLWithType(URLType type) { @(kSailingRecordURL) : @"activity/act-sail/win_record.html", ///航海中奖记录 @(kNetworkRenovateURL) : @"activity/activemodel/index.html?code=ZBGG",///网络整治乱象 @(kMonentsShareURL) : @"modules/world/share-page/index.html",///分享动态 - @(kRedPacketRuleURL) : @"modules/rule/red-packet-rule.html",///红包规则 + @(kRedPacketRuleURL) : @"modules/rule/red-packet-rule.html",///红包规则\ + @(kXinZuoStarURL) : @"activity/act-constellation/index.html",///星座礼物 }; NSString * url = [dic objectForKey:@(type)]; diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/Api/Api+Gift.h b/xplan-ios/Main/ModuleKit/SendGiftView/Api/Api+Gift.h index a1ad88e1..227941f1 100644 --- a/xplan-ios/Main/ModuleKit/SendGiftView/Api/Api+Gift.h +++ b/xplan-ios/Main/ModuleKit/SendGiftView/Api/Api+Gift.h @@ -72,6 +72,9 @@ NS_ASSUME_NONNULL_BEGIN /// 请求福袋全服礼物全服记录 /// @param complection 完成 + (void)requestLuckGiftServerBagRecord:(HttpRequestHelperCompletion)complection; + +/// 请求星座礼物信息 ++ (void)requestTwelveStarFirst:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/Api/Api+Gift.m b/xplan-ios/Main/ModuleKit/SendGiftView/Api/Api+Gift.m index dabc0712..631d0e8b 100644 --- a/xplan-ios/Main/ModuleKit/SendGiftView/Api/Api+Gift.m +++ b/xplan-ios/Main/ModuleKit/SendGiftView/Api/Api+Gift.m @@ -6,7 +6,7 @@ // #import "Api+Gift.h" - +#import "NSMutableDictionary+Saft.h" @implementation Api (Gift) @@ -81,4 +81,11 @@ [self makeRequest:@"anchorFansTeam/sendJoinTeamGift" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, targetUids, giftNum, sendType, giftId, giftSource, giftType, roomUid, msg, uid, nil]; } +/// 请求星座礼物信息 ++ (void)requestTwelveStarFirst:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid { + NSMutableDictionary * params = [NSMutableDictionary dictionary]; + [params safeSetObject:roomUid forKey:@"roomUid"]; + [HttpRequestHelper request:@"twelveStar/getLastRankFirst" method:HttpRequestHelperMethodGET params:params completion:completion]; +} + @end diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/Model/GiftTwelveStarFirstModel.h b/xplan-ios/Main/ModuleKit/SendGiftView/Model/GiftTwelveStarFirstModel.h new file mode 100644 index 00000000..a46d9759 --- /dev/null +++ b/xplan-ios/Main/ModuleKit/SendGiftView/Model/GiftTwelveStarFirstModel.h @@ -0,0 +1,23 @@ +// +// GiftTwelveStarFirstModel.h +// xplan-ios +// +// Created by 冯硕 on 2022/12/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface GiftTwelveStarFirstModel : NSObject +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic, copy) NSString *erbanNo; +@property (nonatomic, copy) NSString *markUrl; +@property (nonatomic, copy) NSString *nick; +@property (nonatomic, copy) NSString *twelveStarName; +@property (nonatomic, copy) NSString *uid; +@property (nonatomic, assign) NSInteger gender; +@property (nonatomic, copy) NSString *twelveId; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/Model/GiftTwelveStarFirstModel.m b/xplan-ios/Main/ModuleKit/SendGiftView/Model/GiftTwelveStarFirstModel.m new file mode 100644 index 00000000..dd02171a --- /dev/null +++ b/xplan-ios/Main/ModuleKit/SendGiftView/Model/GiftTwelveStarFirstModel.m @@ -0,0 +1,12 @@ +// +// GiftTwelveStarFirstModel.m +// xplan-ios +// +// Created by 冯硕 on 2022/12/7. +// + +#import "GiftTwelveStarFirstModel.h" + +@implementation GiftTwelveStarFirstModel + +@end diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/Presenter/XPGiftPresenter.h b/xplan-ios/Main/ModuleKit/SendGiftView/Presenter/XPGiftPresenter.h index 938f2394..622bb781 100644 --- a/xplan-ios/Main/ModuleKit/SendGiftView/Presenter/XPGiftPresenter.h +++ b/xplan-ios/Main/ModuleKit/SendGiftView/Presenter/XPGiftPresenter.h @@ -43,6 +43,9 @@ NS_ASSUME_NONNULL_BEGIN ///全服福袋记录记录 - (void)luckyGiftBroadcastRecord; + +///星座礼物 +- (void)getTwelveStarLastRankFirst:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/Presenter/XPGiftPresenter.m b/xplan-ios/Main/ModuleKit/SendGiftView/Presenter/XPGiftPresenter.m index eb51c6f8..3fb37cdf 100644 --- a/xplan-ios/Main/ModuleKit/SendGiftView/Presenter/XPGiftPresenter.m +++ b/xplan-ios/Main/ModuleKit/SendGiftView/Presenter/XPGiftPresenter.m @@ -16,6 +16,7 @@ #import "GiftReceiveInfoModel.h" #import "UserInfoModel.h" #import "GiftLuckyBroadcastModel.h" +#import "GiftTwelveStarFirstModel.h" ///P #import "XPGiftProtocol.h" @@ -146,4 +147,12 @@ }]]; } +///获取十二星座礼物banner +- (void)getTwelveStarLastRankFirst:(NSString *)roomUid { + [Api requestTwelveStarFirst:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + GiftTwelveStarFirstModel * model = [GiftTwelveStarFirstModel modelWithDictionary:data.data]; + [[self getView] getTwelveStarLastRankFirstSuccess:model]; + }] roomUid:roomUid]; +} + @end diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/Protocol/XPGiftProtocol.h b/xplan-ios/Main/ModuleKit/SendGiftView/Protocol/XPGiftProtocol.h index a0e3cddf..add5c931 100644 --- a/xplan-ios/Main/ModuleKit/SendGiftView/Protocol/XPGiftProtocol.h +++ b/xplan-ios/Main/ModuleKit/SendGiftView/Protocol/XPGiftProtocol.h @@ -8,7 +8,7 @@ #import NS_ASSUME_NONNULL_BEGIN -@class WalletInfoModel, GiftInfoModel, GiftReceiveInfoModel, UserInfoModel; +@class WalletInfoModel, GiftInfoModel, GiftReceiveInfoModel, UserInfoModel, GiftTwelveStarFirstModel; @protocol XPGiftProtocol ///获取用户信息成功 - (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo; @@ -30,6 +30,9 @@ NS_ASSUME_NONNULL_BEGIN ///获取全服福袋礼物记录 - (void)luckyGiftBroadcastRecordSuccess:(NSArray *)records; +///获取周星礼物成功 +- (void)getTwelveStarLastRankFirstSuccess:(GiftTwelveStarFirstModel *)model; + @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftInfoView.h b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftInfoView.h index bc3f772b..c4256aef 100644 --- a/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftInfoView.h +++ b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftInfoView.h @@ -33,9 +33,6 @@ typedef NS_ENUM(NSInteger, GiftSegmentType) { ///点击了某个item - (void)xPGiftInfoView:(XPGiftInfoView *)view didClickItem:(GiftInfoModel *)info type:(GiftSegmentType)type; -///点击了某个周星礼物 -- (void)xpGiftInfoViewDidClickWeekStarGift:(GiftInfoModel *)info; - @end @interface XPGiftInfoView : UIView diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftInfoView.m b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftInfoView.m index 5989199b..fcf18ce1 100644 --- a/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftInfoView.m +++ b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftInfoView.m @@ -266,11 +266,6 @@ static NSString *kSendGiftViewHidePunishNewIcon = @"kSendGiftViewHidePunishNewIc giftInfo.sourceType = GiftSourceType_Normal; } giftInfo.isSelected = YES; - if (self.segmentType == GiftSegmentType_WeekStar) { - if (self.delegate && [self.delegate respondsToSelector:@selector(xpGiftInfoViewDidClickWeekStarGift:)]) { - [self.delegate xpGiftInfoViewDidClickWeekStarGift:giftInfo]; - } - } } // 根据礼物id查找 @@ -644,7 +639,7 @@ static NSString *kSendGiftViewHidePunishNewIcon = @"kSendGiftViewHidePunishNewIc - (UIButton *)weekStarButton { if (!_weekStarButton) { _weekStarButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_weekStarButton setTitle:@"周星" forState:UIControlStateNormal]; + [_weekStarButton setTitle:@"星座礼物" forState:UIControlStateNormal]; [_weekStarButton setTitleColor:[ThemeColor giftSegmentSelectTitleColor] forState:UIControlStateSelected]; [_weekStarButton setTitleColor:[ThemeColor giftSegmentNormalTitleColor] forState:UIControlStateNormal]; _weekStarButton.titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightSemibold]; diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftTwelveStarBroadcastView.h b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftTwelveStarBroadcastView.h new file mode 100644 index 00000000..5dc84bd6 --- /dev/null +++ b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftTwelveStarBroadcastView.h @@ -0,0 +1,27 @@ +// +// XPGiftTwelveStarBroadcastView.h +// xplan-ios +// +// Created by 冯硕 on 2022/12/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class GiftTwelveStarFirstModel, XPGiftTwelveStarBroadcastView; + +@protocol XPGiftTwelveStarBroadcastViewDelegate + +- (void)xPGiftTwelveStarBroadcastView:(XPGiftTwelveStarBroadcastView *)view didClickDetail:(UIButton *)sender; +@end + +@interface XPGiftTwelveStarBroadcastView : UIView + +@property (nonatomic, strong) GiftTwelveStarFirstModel *giftInfo; + +///代理 +@property (nonatomic,weak) id delegate; + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftTwelveStarBroadcastView.m b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftTwelveStarBroadcastView.m new file mode 100644 index 00000000..a1f96ebe --- /dev/null +++ b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPGiftTwelveStarBroadcastView.m @@ -0,0 +1,248 @@ +// +// XPGiftTwelveStarBroadcastView.m +// xplan-ios +// +// Created by 冯硕 on 2022/12/7. +// + +#import "XPGiftTwelveStarBroadcastView.h" +///Third +#import +///Tool +#import "ThemeColor.h" +#import "TTPopup.h" +#import "XCCurrentVCStackManager.h" +#import "XPWebViewController.h" +#import "XPHtmlUrl.h" +#import "NetImageView.h" +///Model +#import "GiftTwelveStarFirstModel.h" + +@interface XPGiftTwelveStarBroadcastView() + +@property (nonatomic, strong) UIView *mainView; +///背景 +@property (nonatomic, strong) UIImageView *bgImageView; +///活动入口 +@property (nonatomic, strong) UIButton *weekStarButton; +///魅力头像 +@property (nonatomic, strong) NetImageView *iconImageView; +///贡献头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///魅力标题 +@property (nonatomic, strong) UILabel *charmLabel; +///贡献标题 +@property (nonatomic, strong) UILabel *contributeLabel; + +@property (nonatomic, strong) UIImageView *sexImageView; + +@property (nonatomic, strong) UILabel *desLabel; + +@end + +@implementation XPGiftTwelveStarBroadcastView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.bgImageView]; + [self addSubview:self.mainView]; + [self.mainView addSubview:self.weekStarButton]; + [self.mainView addSubview:self.iconImageView]; + [self.mainView addSubview:self.avatarImageView]; + [self.mainView addSubview:self.charmLabel]; + [self.mainView addSubview:self.sexImageView]; + [self.mainView addSubview:self.contributeLabel]; + [self.mainView addSubview:self.desLabel]; + + self.iconImageView.hidden = YES; + self.avatarImageView.hidden = YES; + self.charmLabel.hidden = YES; + self.contributeLabel.hidden = YES; + self.sexImageView.hidden = YES; +} + +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self); + make.width.mas_equalTo(355); + make.top.bottom.mas_equalTo(self); + }]; + [self.mainView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.bgImageView); + make.height.mas_equalTo(36); + make.bottom.mas_equalTo(0); + }]; + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.mainView).mas_offset(33); + make.width.height.mas_equalTo(30); + make.centerY.mas_equalTo(self.mainView); + }]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.iconImageView.mas_right).mas_offset(8); + make.width.height.mas_equalTo(24); + make.centerY.mas_equalTo(self.mainView); + }]; + [self.charmLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(14); + make.bottom.mas_equalTo(self.avatarImageView.mas_centerY); + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(8); + }]; + + [self.contributeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(14); + make.top.mas_equalTo(self.charmLabel.mas_bottom); + make.left.mas_equalTo(self.charmLabel); + }]; + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(10); + make.left.mas_equalTo(self.contributeLabel.mas_right).mas_offset(2); + make.centerY.mas_equalTo(self.contributeLabel); + }]; + [self.weekStarButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(18); + make.centerY.mas_equalTo(self.mainView); + make.right.mas_equalTo(self.mainView).mas_offset(-25); + make.width.mas_equalTo(64); + }]; + [self.desLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.mainView); + make.left.mas_equalTo(self.mainView).mas_offset(54); + }]; +} + +#pragma mark - action +- (void)playButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftTwelveStarBroadcastView:didClickDetail:)]) { + [self.delegate xPGiftTwelveStarBroadcastView:self didClickDetail:sender]; + } +} + +- (void)setGiftInfo:(GiftTwelveStarFirstModel *)giftInfo { + if (giftInfo.nick) { + self.iconImageView.imageUrl = giftInfo.markUrl; + self.avatarImageView.imageUrl = giftInfo.avatar; + self.charmLabel.text = [NSString stringWithFormat:@"上期星座月%@星主", giftInfo.twelveStarName]; + self.contributeLabel.text = giftInfo.nick; + NSString *imageName = giftInfo.gender == 1 ? @"common_sex_male" : @"common_sex_female"; + self.sexImageView.image = [UIImage imageNamed:imageName]; + self.iconImageView.hidden = NO; + self.avatarImageView.hidden = NO; + self.charmLabel.hidden = NO; + self.contributeLabel.hidden = NO; + self.sexImageView.hidden = NO; + self.desLabel.hidden = YES; + } else { + self.iconImageView.hidden = YES; + self.avatarImageView.hidden = YES; + self.charmLabel.hidden = YES; + self.contributeLabel.hidden = YES; + self.sexImageView.hidden = YES; + self.desLabel.hidden = NO; + } +} + +- (UIView *)mainView { + if (!_mainView) { + _mainView = [[UIView alloc] init]; + } + return _mainView; +} + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.image = [UIImage imageNamed:@"gift_constellationBanner_bg"]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + _bgImageView.userInteractionEnabled = YES; + } + return _bgImageView; +} + +- (NetImageView *)iconImageView { + if (!_iconImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _iconImageView = [[NetImageView alloc] initWithConfig:config]; + _iconImageView.userInteractionEnabled = YES; + } + return _iconImageView; +} + +- (UILabel *)charmLabel { + if (!_charmLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; + label.textColor = UIColorFromRGB(0xFDE19B); + label.text = @"上期星座月天蝎座星主"; + _charmLabel = label; + } + return _charmLabel; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 12; + _avatarImageView.userInteractionEnabled = YES; + } + return _avatarImageView; +} + +- (UILabel *)contributeLabel { + if (!_contributeLabel) { + UILabel *label = [[UILabel alloc] init]; + label.font = [UIFont systemFontOfSize:10]; + label.textColor = [UIColor whiteColor]; + label.text = @"昵称"; + _contributeLabel = label; + } + return _contributeLabel; +} + +- (UIButton *)weekStarButton { + if (!_weekStarButton) { + UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; + button.backgroundColor = UIColorRGBAlpha(0x000000, 0.36); + [button addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:@"活动详情 >" forState:UIControlStateNormal]; + [button setTitleColor:UIColorFromRGB(0x00EEFF) forState:UIControlStateNormal]; + button.titleLabel.font = [UIFont systemFontOfSize:10]; + button.layer.masksToBounds = YES; + button.layer.cornerRadius = 9; + _weekStarButton = button; + } + return _weekStarButton; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + } + return _sexImageView; +} + +- (UILabel *)desLabel { + if (!_desLabel) { + _desLabel = [[UILabel alloc] init]; + _desLabel.text = @"星座物语,限定开启星座月!"; + _desLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _desLabel.textColor = UIColorFromRGB(0xFDE19B); + } + return _desLabel; +} + +@end diff --git a/xplan-ios/Main/ModuleKit/SendGiftView/View/XPSendGiftView.m b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPSendGiftView.m index c50f9826..93431474 100644 --- a/xplan-ios/Main/ModuleKit/SendGiftView/View/XPSendGiftView.m +++ b/xplan-ios/Main/ModuleKit/SendGiftView/View/XPSendGiftView.m @@ -19,6 +19,7 @@ #import "XPHtmlUrl.h" #import "AccountInfoStorage.h" #import "NSArray+Safe.h" +#import "XCCurrentVCStackManager.h" ///Model #import "GiftInfoModel.h" #import "XPGiftCountModel.h" @@ -35,7 +36,7 @@ #import "XPGraffitiGiftView.h" #import "XPGiftHeadTypeView.h" #import "XPGiftLuckyGiftBroadcastView.h" -#import "XPGiftWeekStarBroadcastView.h" +#import "XPGiftTwelveStarBroadcastView.h" ///P #import "XPGiftProtocol.h" ///VC @@ -44,7 +45,7 @@ #import "XPFirstRechargeViewController.h" #import "XPNobleCenterViewController.h" -@interface XPSendGiftView ()< XPGiftBarViewDelegate, XPGiftProtocol, XPGiftInfoViewDelegate, XPGraffitiGiftViewDelegate, XPGiftUsersViewDelegate, XPGiftHeadTypeViewDelegate, XPGiftWeekStarBroadcastViewDelegate, XPGiftLuckyGiftBroadcastViewDelegate> +@interface XPSendGiftView ()< XPGiftBarViewDelegate, XPGiftProtocol, XPGiftInfoViewDelegate, XPGraffitiGiftViewDelegate, XPGiftUsersViewDelegate, XPGiftHeadTypeViewDelegate, XPGiftLuckyGiftBroadcastViewDelegate, XPGiftTwelveStarBroadcastViewDelegate> ///顶部的区域 @property (nonatomic,strong) UIView * topView; ///内容区域 @@ -55,8 +56,8 @@ @property (nonatomic,strong) UIStackView *stackView; ///幸运礼物广播 @property (nonatomic, strong) XPGiftLuckyGiftBroadcastView *luckyBroadcastView; -///周星礼物广播 -@property (nonatomic, strong) XPGiftWeekStarBroadcastView *weekStarBroadcastView; +///星座礼物广播 +@property (nonatomic, strong) XPGiftTwelveStarBroadcastView *constellationBanner; ///礼物类型(普通/互动) @property (nonatomic, strong) XPGiftHeadTypeView *headTypeView; ///送礼物的人 @@ -151,6 +152,7 @@ [self.presenter getNormalGiftList:self.roomUid]; [self.presenter getPackGiftList]; [self.presenter luckyGiftBroadcastRecord]; + [self.presenter getTwelveStarLastRankFirst:self.roomUid]; } #pragma mark - Send Custom Message @@ -404,15 +406,17 @@ ///充值 - (void)xPGiftBarViewDidClickRecharge:(XPGiftBarView *)view { - [self dismissViewControllerAnimated:YES completion:nil]; - XPMineRechargeViewController * rechargeVC = [[XPMineRechargeViewController alloc] init]; - [self.delegate.getCurrentNav pushViewController:rechargeVC animated:YES]; + [self dismissViewControllerAnimated:NO completion:^{ + XPMineRechargeViewController * rechargeVC = [[XPMineRechargeViewController alloc] init]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:rechargeVC animated:YES]; + }]; } - (void)xPGiftBarViewDidClickFirstRecharge:(XPGiftBarView *)view { - [self dismissViewControllerAnimated:YES completion:nil]; - XPFirstRechargeViewController * firstRechargeVC = [[XPFirstRechargeViewController alloc] initWithNavigation:self.delegate.getCurrentNav]; - [self.delegate.getCurrentNav presentViewController:firstRechargeVC animated:YES completion:nil]; + [self dismissViewControllerAnimated:NO completion:^{ + XPFirstRechargeViewController * firstRechargeVC = [[XPFirstRechargeViewController alloc] initWithNavigation:self.delegate.getCurrentNav]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController presentViewController:firstRechargeVC animated:YES completion:nil]; + }]; } #pragma mark - XPGiftLuckyGiftBroadcastViewDelegate @@ -432,26 +436,30 @@ #pragma mark - XPGiftWeekStarBroadcastViewDelegate ///点击了周星榜入口 - (void)xPGiftWeekStarBroadcastViewWeekStarClick { - [self dismissViewControllerAnimated:YES completion:nil]; - XPWebViewController * webVC = [[XPWebViewController alloc] init]; - webVC.roomUid = self.roomUid; - webVC.url = URLWithType(kNewWeekStarURL); - [self.delegate.getCurrentNav pushViewController:webVC animated:YES]; + [self dismissViewControllerAnimated:NO completion:^{ + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.roomUid = self.roomUid; + webVC.url = URLWithType(kNewWeekStarURL); + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + }]; } #pragma mark - XPGiftHeadTypeViewDelegate ///点击了贵族 - (void)xPGiftHeadTypeViewDidClickNoble:(XPGiftHeadTypeView *)view { - [self dismissViewControllerAnimated:YES completion:nil]; - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceGiftClick]; - XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid]; - [self.delegate.getCurrentNav pushViewController:nobleVC animated:YES]; + [self dismissViewControllerAnimated:NO completion:^{ + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceGiftClick]; + XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:nobleVC animated:YES]; + }]; } ///点击了首充 - (void)xPGiftHeadTypeViewDidClickFirstRecharge:(XPGiftHeadTypeView *)view { - [self dismissViewControllerAnimated:YES completion:nil]; - XPFirstRechargeViewController * firstRechargeVC = [[XPFirstRechargeViewController alloc] initWithNavigation:self.delegate.getCurrentNav]; - [self.delegate.getCurrentNav presentViewController:firstRechargeVC animated:YES completion:nil]; + [self dismissViewControllerAnimated:NO completion:^{ + XPFirstRechargeViewController * firstRechargeVC = [[XPFirstRechargeViewController alloc] initWithNavigation:[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController presentViewController:firstRechargeVC animated:YES completion:nil]; + }]; + } ///点击了礼物 - (void)xPGiftHeadTypeViewDidClickGift:(XPGiftHeadTypeView *)view { @@ -478,7 +486,7 @@ self.giftBarView.type = type; self.giftBarView.drawGiftCount = 0; if (type == GiftSegmentType_Lucky) { - [self.weekStarBroadcastView removeFromSuperview]; + [self.constellationBanner removeFromSuperview]; // self.presenter if (!self.luckyBroadcastView.superview) { [self.view addSubview:self.luckyBroadcastView]; @@ -490,26 +498,20 @@ } } else if(type == GiftSegmentType_WeekStar) { [self.luckyBroadcastView removeFromSuperview]; - if (!self.weekStarBroadcastView.superview) { - [self.view addSubview:self.weekStarBroadcastView]; - [self.weekStarBroadcastView mas_makeConstraints:^(MASConstraintMaker *make) { + if (!self.constellationBanner.superview) { + [self.view addSubview:self.constellationBanner]; + [self.constellationBanner mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(self.contentView.mas_top); make.left.right.mas_equalTo(0); - make.height.mas_equalTo(56); + make.height.mas_equalTo(75); }]; } } else { [self.luckyBroadcastView removeFromSuperview]; - [self.weekStarBroadcastView removeFromSuperview]; + [self.constellationBanner removeFromSuperview]; } } - -///点击了某个周星礼物 -- (void)xpGiftInfoViewDidClickWeekStarGift:(GiftInfoModel *)info { - self.weekStarBroadcastView.giftInfo = info; -} - - (void)xPGiftInfoView:(XPGiftInfoView *)view didClickItem:(GiftInfoModel *)info type:(GiftSegmentType)type { if (type == GiftSegmentType_Graffiti) { self.giftInfoView.hidden = YES; @@ -554,6 +556,15 @@ self.giftBarView.drawGiftCount = self.graffitiPoint.count; } +#pragma mark - XPGiftTwelveStarBroadcastViewDelegate +- (void)xPGiftTwelveStarBroadcastView:(XPGiftTwelveStarBroadcastView *)view didClickDetail:(UIButton *)sender { + [self dismissViewControllerAnimated:NO completion:^{ + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + webVC.url = URLWithType(kXinZuoStarURL); + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; + }]; +} + #pragma mark - XPGiftProtocol - (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { self.headTypeView.isShowFirstRecharge = userInfo.isFirstCharge; @@ -633,9 +644,10 @@ /// 余额不足,是否弹首充弹窗 - (void)showNotSufficientFundsWithToast:(NSString *)msg { if (self.delegate.getUserInfo.isFirstCharge) { - [self dismissViewControllerAnimated:YES completion:nil]; - XPFirstRechargeViewController * firstRechargeVC = [[XPFirstRechargeViewController alloc] initWithNavigation:self.delegate.getCurrentNav]; - [self.delegate.getCurrentNav presentViewController:firstRechargeVC animated:YES completion:nil]; + [self dismissViewControllerAnimated:NO completion:^{ + XPFirstRechargeViewController * firstRechargeVC = [[XPFirstRechargeViewController alloc] initWithNavigation:XCCurrentVCStackManager.shareManager.getCurrentVC.navigationController]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController presentViewController:firstRechargeVC animated:YES completion:nil]; + }]; } else { [self showErrorToast:msg]; } @@ -647,6 +659,10 @@ self.luckyBroadcastView.records = records; } +- (void)getTwelveStarLastRankFirstSuccess:(GiftTwelveStarFirstModel *)model { + self.constellationBanner.giftInfo = model; +} + #pragma mark - Event Response - (void)disMissViewRecognizer:(UITapGestureRecognizer *)tap { [self dismissViewControllerAnimated:YES completion:nil]; @@ -762,12 +778,12 @@ return _luckyBroadcastView; } -- (XPGiftWeekStarBroadcastView *)weekStarBroadcastView { - if (!_weekStarBroadcastView) { - _weekStarBroadcastView = [[XPGiftWeekStarBroadcastView alloc] init]; - _weekStarBroadcastView.delegate = self; +- (XPGiftTwelveStarBroadcastView *)constellationBanner { + if (!_constellationBanner) { + _constellationBanner = [[XPGiftTwelveStarBroadcastView alloc] init]; + _constellationBanner.delegate = self; } - return _weekStarBroadcastView; + return _constellationBanner; } - (UIVisualEffectView *)effectView {