From 979cc9f6729e21a039852555ed815eecea12616f Mon Sep 17 00:00:00 2001 From: liyuhua <15626451870@163.com> Date: Tue, 18 Jul 2023 18:26:10 +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 --- YuMi.xcodeproj/project.pbxproj | 45 +- .../login_arrow.imageset}/Contents.json | 4 +- .../login_arrow.imageset/login_arrow@2x.png | Bin 0 -> 172 bytes .../login_arrow.imageset/login_arrow@3x.png | Bin 0 -> 255 bytes .../Contents.json | 22 + .../login_forget_password_hidden@2x.png | Bin 0 -> 730 bytes .../login_forget_password_hidden@3x.png | Bin 0 -> 1248 bytes .../Contents.json | 22 + .../login_forget_password_show@2x.png | Bin 0 -> 416 bytes .../login_forget_password_show@3x.png | Bin 0 -> 607 bytes .../Contents.json | 25 + .../room_gift_noble_entrance@2x.png | Bin 0 -> 4875 bytes .../room_gift_noble_entrance@3x.png | Bin 0 -> 8133 bytes .../mine_setting_modif_pay_pwd_hidden@2x.png | Bin 440 -> 776 bytes .../mine_setting_modif_pay_pwd_hidden@3x.png | Bin 751 -> 1248 bytes .../mine_setting_modif_pay_pwd_show@2x.png | Bin 323 -> 412 bytes .../mine_setting_modif_pay_pwd_show@3x.png | Bin 572 -> 676 bytes .../Contents.json | 22 + .../gift_twelve_star_Banner_arrow@2x.png | Bin 0 -> 181 bytes .../gift_twelve_star_Banner_arrow@3x.png | Bin 0 -> 238 bytes .../Contents.json | 22 + .../gift_twelve_star_Banner_naming_bg@2x.png | Bin 0 -> 12358 bytes .../gift_twelve_star_Banner_naming_bg@3x.png | Bin 0 -> 23594 bytes .../Contents.json | 22 + .../gift_twelve_star_Banner_rich_bg@2x.png | Bin 0 -> 12183 bytes .../gift_twelve_star_Banner_rich_bg@3x.png | Bin 0 -> 23322 bytes .../gift_constellationBanner_bg@2x.png | Bin 18108 -> 0 bytes .../gift_constellationBanner_bg@3x.png | Bin 35814 -> 0 bytes .../Contents.json | 3 +- .../common_avatar@2x.png | Bin 0 -> 10079 bytes .../common_empty_avatar@2x.png | Bin 2241 -> 0 bytes .../common_empty_avatar@3x.png | Bin 3802 -> 0 bytes YuMi/CustomUI/DJDKMIMOMColor.m | 2 +- YuMi/Global/YUMIHtmlUrl.h | 2 + YuMi/Global/YUMIHtmlUrl.m | 11 +- YuMi/Modules/YMLogin/Api/Api+Login.h | 4 +- YuMi/Modules/YMLogin/Api/Api+Login.m | 8 +- .../Presenter/LoginForgetPasswordPresent.h | 2 +- .../Presenter/LoginForgetPasswordPresent.m | 4 +- .../YMLogin/Presenter/LoginVerifCodePresent.h | 2 +- .../YMLogin/Presenter/LoginVerifCodePresent.m | 4 +- .../XPLoginVerifBindPhonePresenter.h | 4 +- .../XPLoginVerifBindPhonePresenter.m | 8 +- .../View/CustomView/LoginForgetEditView.h | 36 + .../View/CustomView/LoginForgetEditView.m | 206 ++ .../View/LoginForgetPasswordViewController.h | 17 + .../View/LoginForgetPasswordViewController.m | 237 ++ .../View/NewLogin/XPForgetPwdViewController.m | 2 +- .../XPLoginBindPhoneResultViewController.m | 155 +- .../XPLoginVerifBindPhoneViewController.h | 13 +- .../XPLoginVerifBindPhoneViewController.m | 544 ++-- .../Presenter/XPMineVerifIdentityPresenter.h | 2 +- .../Presenter/XPMineVerifIdentityPresenter.m | 4 +- .../View/IncomeRecord/XPIncomeRecordVC.m | 35 +- .../View/IncomeRecord/XPIncomeRecordView.m | 4 +- .../XPMineLoginPasswordViewController.m | 287 +- .../Setting/XPMineModifPayPwdViewController.m | 233 +- .../XPMineVerifIdentityViewController.h | 6 +- .../XPMineVerifIdentityViewController.m | 174 +- .../View/SubViews/XPMineModifPayPwdView.m | 135 +- .../YMMine/View/XPMineViewController.m | 1 + .../View/XPMonentsAttentionViewController.m | 1 + .../View/XPMonentsLatestViewController.m | 1 + .../View/XPMonentsRecommendViewController.m | 1 + .../View/XPHomePartyViewController.m | 1 + .../View/XPHomeRecommendViewController.m | 1 + .../View/AnimationView/XPRoomAnimationView.m | 84 +- .../View/AnimationView/XPRoomCandyGiftView.m | 204 +- .../Tool/XPRoomMessageParser.m | 2 +- .../MoreView/Presenter/XPMoreMenuPresenter.m | 4 +- .../Model/XPWeekStarRankUserModel.h | 3 +- .../View/SendGiftView/View/XPGiftBarView.m | 3 +- .../SendGiftView/View/XPGiftHeadTypeView.m | 10 +- .../View/SendGiftView/View/XPGiftInfoView.m | 21 +- .../View/XPGiftLuckyGiftBroadcastView.m | 5 +- .../View/XPGiftTwelveStarBroadcastView.h | 18 +- .../View/XPGiftTwelveStarBroadcastView.m | 387 ++- .../View/XPGiftWeekStarBroadcastView.h | 28 - .../View/XPGiftWeekStarBroadcastView.m | 261 -- .../View/SendGiftView/View/XPSendGiftView.m | 29 +- .../Modules/YMRoom/View/StageView/StageView.m | 7 +- .../View/PIFullScreenBannerAnimation.m | 2 +- .../YMTabbar/View/TabbarViewController.m | 236 +- YuMi/Structure/MVP/Api/Api.h | 2 +- YuMi/Structure/MVP/Api/Api.m | 4 +- YuMi/Structure/MVP/Model/UserInfoModel.h | 3 + YuMi/Structure/PrefixHeader.pch | 2 + YuMi/zh-Hans.lproj/Localizable.strings | 2526 +++++++++++++++++ YuMi/zh-Hant.lproj/Localizable.strings | 32 +- 89 files changed, 4589 insertions(+), 1618 deletions(-) rename YuMi/Assets.xcassets/{middle/gift_constellationBanner_bg.imageset => Login/login_arrow.imageset}/Contents.json (70%) create mode 100644 YuMi/Assets.xcassets/Login/login_arrow.imageset/login_arrow@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_arrow.imageset/login_arrow@3x.png create mode 100644 YuMi/Assets.xcassets/Login/login_forget_password_hidden.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/Login/login_forget_password_hidden.imageset/login_forget_password_hidden@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_forget_password_hidden.imageset/login_forget_password_hidden@3x.png create mode 100644 YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/login_forget_password_show@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/login_forget_password_show@3x.png create mode 100644 YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/room_gift_noble_entrance@2x.png create mode 100644 YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/room_gift_noble_entrance@3x.png create mode 100644 YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_arrow.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_arrow.imageset/gift_twelve_star_Banner_arrow@2x.png create mode 100644 YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_arrow.imageset/gift_twelve_star_Banner_arrow@3x.png create mode 100644 YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/gift_twelve_star_Banner_naming_bg@2x.png create mode 100644 YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/gift_twelve_star_Banner_naming_bg@3x.png create mode 100644 YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/gift_twelve_star_Banner_rich_bg@2x.png create mode 100644 YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/gift_twelve_star_Banner_rich_bg@3x.png delete mode 100644 YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@2x.png delete mode 100644 YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@3x.png create mode 100644 YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_avatar@2x.png delete mode 100644 YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_empty_avatar@2x.png delete mode 100644 YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_empty_avatar@3x.png create mode 100644 YuMi/Modules/YMLogin/View/CustomView/LoginForgetEditView.h create mode 100644 YuMi/Modules/YMLogin/View/CustomView/LoginForgetEditView.m create mode 100644 YuMi/Modules/YMLogin/View/LoginForgetPasswordViewController.h create mode 100644 YuMi/Modules/YMLogin/View/LoginForgetPasswordViewController.m delete mode 100644 YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.h delete mode 100644 YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.m create mode 100644 YuMi/zh-Hans.lproj/Localizable.strings diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index f07e3f9e..9934269b 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -173,6 +173,8 @@ 2331C1B82A60F32D00E1D940 /* XPRoomHalfWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1A62A60F32D00E1D940 /* XPRoomHalfWebView.m */; }; 2331C1B92A60F32D00E1D940 /* Api+CandyTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1A82A60F32D00E1D940 /* Api+CandyTree.m */; }; 2331C1BD2A60F69E00E1D940 /* UILabel+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1BC2A60F69E00E1D940 /* UILabel+Utils.m */; }; + 23B2AEC12A64E9C200543D17 /* LoginForgetEditView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23B2AEC02A64E9C200543D17 /* LoginForgetEditView.m */; }; + 23B2AEC42A6516C200543D17 /* LoginForgetPasswordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 23B2AEC22A6516C200543D17 /* LoginForgetPasswordViewController.m */; }; 23BA165B2A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23BA165A2A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.m */; }; 73FFADDC93E195344047A2EC /* Pods_YuMi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_YuMi.framework */; }; 9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* AnchorStageView.m */; }; @@ -220,7 +222,6 @@ 9B42869C28C1FD3D009034D2 /* XPOpenRedPacketCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B42869B28C1FD3D009034D2 /* XPOpenRedPacketCell.m */; }; 9B4C5B86292F81FA00CEA41B /* XPSessionListFansPartyModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4C5B85292F81FA00CEA41B /* XPSessionListFansPartyModel.m */; }; 9B4D449328F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4D449228F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m */; }; - 9B4D449628F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4D449528F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m */; }; 9B4E920028E57A620033419E /* XPGiftHeadTypeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B4E91FF28E57A620033419E /* XPGiftHeadTypeView.m */; }; 9B6B3AAB278C2EA7005551EC /* XPRoomNobleLevelUpView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B3AAA278C2EA7005551EC /* XPRoomNobleLevelUpView.m */; }; 9B6E856A281A982A0041A321 /* XPRoomRecommendView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8569281A982A0041A321 /* XPRoomRecommendView.m */; }; @@ -1574,6 +1575,11 @@ 2331C1A92A60F32D00E1D940 /* Api+CandyTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+CandyTree.h"; sourceTree = ""; }; 2331C1BB2A60F69E00E1D940 /* UILabel+Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UILabel+Utils.h"; sourceTree = ""; }; 2331C1BC2A60F69E00E1D940 /* UILabel+Utils.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UILabel+Utils.m"; sourceTree = ""; }; + 23352A0D2A669D57001DB9B5 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; + 23B2AEBF2A64E9C200543D17 /* LoginForgetEditView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginForgetEditView.h; sourceTree = ""; }; + 23B2AEC02A64E9C200543D17 /* LoginForgetEditView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginForgetEditView.m; sourceTree = ""; }; + 23B2AEC22A6516C200543D17 /* LoginForgetPasswordViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginForgetPasswordViewController.m; sourceTree = ""; }; + 23B2AEC32A6516C200543D17 /* LoginForgetPasswordViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginForgetPasswordViewController.h; sourceTree = ""; }; 23BA16592A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIBaseAnimationViewModel.h; sourceTree = ""; }; 23BA165A2A5D2ACF0030C5A3 /* PIBaseAnimationViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIBaseAnimationViewModel.m; sourceTree = ""; }; 7DB00EC07F1D0ADFF900B38D /* Pods-YuMi.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YuMi.debug.xcconfig"; path = "Target Support Files/Pods-YuMi/Pods-YuMi.debug.xcconfig"; sourceTree = ""; }; @@ -1667,8 +1673,6 @@ 9B4C5B85292F81FA00CEA41B /* XPSessionListFansPartyModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListFansPartyModel.m; sourceTree = ""; }; 9B4D449128F15765002572D5 /* XPGiftLuckyGiftBroadcastView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftLuckyGiftBroadcastView.h; sourceTree = ""; }; 9B4D449228F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftLuckyGiftBroadcastView.m; sourceTree = ""; }; - 9B4D449428F15EE7002572D5 /* XPGiftWeekStarBroadcastView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftWeekStarBroadcastView.h; sourceTree = ""; }; - 9B4D449528F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftWeekStarBroadcastView.m; sourceTree = ""; }; 9B4E91FE28E57A620033419E /* XPGiftHeadTypeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftHeadTypeView.h; sourceTree = ""; }; 9B4E91FF28E57A620033419E /* XPGiftHeadTypeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftHeadTypeView.m; sourceTree = ""; }; 9B6B3AA9278C2EA7005551EC /* XPRoomNobleLevelUpView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomNobleLevelUpView.h; sourceTree = ""; }; @@ -4096,6 +4100,8 @@ E81366F226F0B7C80076364C /* LoginFullInfoViewController.m */, E824543326F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.h */, E824543426F57D6E00BE8163 /* XPLoginVerifBindPhoneViewController.m */, + 23B2AEC32A6516C200543D17 /* LoginForgetPasswordViewController.h */, + 23B2AEC22A6516C200543D17 /* LoginForgetPasswordViewController.m */, ); path = View; sourceTree = ""; @@ -4519,20 +4525,20 @@ 2331C1912A60F32D00E1D940 /* View */ = { isa = PBXGroup; children = ( - 2331C1922A60F32D00E1D940 /* XPCandyTreeRankView.m */, - 2331C1932A60F32D00E1D940 /* XPCandyTreeMoreView.m */, - 2331C1942A60F32D00E1D940 /* XPCandyTreeViewController.h */, - 2331C1952A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.h */, - 2331C1962A60F32D00E1D940 /* XPCandyTreeGiftView.m */, - 2331C1972A60F32D00E1D940 /* XPRoomHalfWebView.h */, - 2331C1982A60F32D00E1D940 /* XPCandyRankContainerView.h */, 2331C1992A60F32D00E1D940 /* Cell */, - 2331C1A02A60F32D00E1D940 /* XPCandyTreeRankView.h */, - 2331C1A12A60F32D00E1D940 /* XPCandyTreeViewController.m */, - 2331C1A22A60F32D00E1D940 /* XPCandyTreeMoreView.h */, - 2331C1A32A60F32D00E1D940 /* XPCandyTreeGiftView.h */, - 2331C1A42A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.m */, + 2331C1982A60F32D00E1D940 /* XPCandyRankContainerView.h */, 2331C1A52A60F32D00E1D940 /* XPCandyRankContainerView.m */, + 2331C1A32A60F32D00E1D940 /* XPCandyTreeGiftView.h */, + 2331C1962A60F32D00E1D940 /* XPCandyTreeGiftView.m */, + 2331C1952A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.h */, + 2331C1A42A60F32D00E1D940 /* XPCandyTreeInsufficientBalanceView.m */, + 2331C1A22A60F32D00E1D940 /* XPCandyTreeMoreView.h */, + 2331C1932A60F32D00E1D940 /* XPCandyTreeMoreView.m */, + 2331C1A02A60F32D00E1D940 /* XPCandyTreeRankView.h */, + 2331C1922A60F32D00E1D940 /* XPCandyTreeRankView.m */, + 2331C1942A60F32D00E1D940 /* XPCandyTreeViewController.h */, + 2331C1A12A60F32D00E1D940 /* XPCandyTreeViewController.m */, + 2331C1972A60F32D00E1D940 /* XPRoomHalfWebView.h */, 2331C1A62A60F32D00E1D940 /* XPRoomHalfWebView.m */, ); path = View; @@ -7046,6 +7052,8 @@ E872308A26E89D5100B90D4F /* CustomView */ = { isa = PBXGroup; children = ( + 23B2AEBF2A64E9C200543D17 /* LoginForgetEditView.h */, + 23B2AEC02A64E9C200543D17 /* LoginForgetEditView.m */, E872309126E8D31500B90D4F /* LoginVerifCodeView.h */, E872309226E8D31500B90D4F /* LoginVerifCodeView.m */, E824543B26F58C3A00BE8163 /* XPLoginBindSuccessView.h */, @@ -7317,8 +7325,6 @@ E8901CF528B38D89001E9A92 /* XPGraffitiGiftView.m */, 9B4D449128F15765002572D5 /* XPGiftLuckyGiftBroadcastView.h */, 9B4D449228F15765002572D5 /* XPGiftLuckyGiftBroadcastView.m */, - 9B4D449428F15EE7002572D5 /* XPGiftWeekStarBroadcastView.h */, - 9B4D449528F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m */, E8D4DE422940462C00EC788D /* XPGiftTwelveStarBroadcastView.h */, E8D4DE432940462C00EC788D /* XPGiftTwelveStarBroadcastView.m */, ); @@ -9003,6 +9009,7 @@ en, Base, "zh-Hant", + "zh-Hans", ); mainGroup = 189DD52026DE255300AB55B1; productRefGroup = 189DD52A26DE255300AB55B1 /* Products */; @@ -9303,6 +9310,7 @@ E801275827E347FD00BAC3F2 /* RoomPKRecordModel.m in Sources */, E8E0DAE0285C20E500566A2F /* MessageContentFindNewGreetView.m in Sources */, E8A3540128FEAC5E0014A784 /* XPWishGiftTableViewCell.m in Sources */, + 23B2AEC12A64E9C200543D17 /* LoginForgetEditView.m in Sources */, E8EEB90326FC31DC007C6EBA /* XPMineUserInfoProtocol.h in Sources */, E8232603274E4AA0003A3332 /* ThemeColor+UserCard.m in Sources */, E87A24F1272935920086A794 /* XPMessageRemoteExtModel.m in Sources */, @@ -9925,7 +9933,6 @@ 9BD798B4292632FE003E03E6 /* XPSessionListHeadItemView.m in Sources */, E8E20BE828169BDC0033B688 /* XPMineLoginPasswordPresenter.m in Sources */, E85E7B3F2A4EB0D300B6D00A /* XPGuildSingleRoomIncomeTableViewCell.m in Sources */, - 9B4D449628F15EE7002572D5 /* XPGiftWeekStarBroadcastView.m in Sources */, E84150C227747BF700A7F548 /* FirstRechargeModel.m in Sources */, 9B1EF3D227E81C0600554295 /* XPMineDressUpBubbleViewController.m in Sources */, 2331C1AB2A60F32D00E1D940 /* CandyTreeResultModel.m in Sources */, @@ -10010,6 +10017,7 @@ E8AB632C28AE19600023B0D2 /* XPMonentsMineViewController.m in Sources */, E87AE8C1284E184300CAFBB3 /* RoomNewUserGreetModel.m in Sources */, 9BC5C91C277C8A7B007C8719 /* XPReleaseRadioViewController.m in Sources */, + 23B2AEC42A6516C200543D17 /* LoginForgetPasswordViewController.m in Sources */, 186A534C26FC6ED900D67B2C /* TTAlertView.m in Sources */, E8A3540428FEB7100014A784 /* XPWishGiftHistoryViewController.m in Sources */, E85E7B332A4EB0D300B6D00A /* XPGuildIncomeSectionView.m in Sources */, @@ -10295,6 +10303,7 @@ isa = PBXVariantGroup; children = ( E80E09AA2A40B70100CD2BE7 /* zh-Hant */, + 23352A0D2A669D57001DB9B5 /* zh-Hans */, ); name = Localizable.strings; sourceTree = ""; diff --git a/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_arrow.imageset/Contents.json similarity index 70% rename from YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/Contents.json rename to YuMi/Assets.xcassets/Login/login_arrow.imageset/Contents.json index abce1bf7..c3233654 100644 --- a/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/Contents.json +++ b/YuMi/Assets.xcassets/Login/login_arrow.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "gift_constellationBanner_bg@2x.png", + "filename" : "login_arrow@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "gift_constellationBanner_bg@3x.png", + "filename" : "login_arrow@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/Login/login_arrow.imageset/login_arrow@2x.png b/YuMi/Assets.xcassets/Login/login_arrow.imageset/login_arrow@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..046278bbcdcc9d411488d969b29df9269c4aa99e GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^VnEEp!VDy*To3pPq(lRJLR^8ggoLM@w7;B`zr3`+ zpr8woJhNhgK2Up>xb#1$+N5?YKxZJrX%t&AIP${cKaaS7xW N22WQ%mvv4FO#mEsEUEwi literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_arrow.imageset/login_arrow@3x.png b/YuMi/Assets.xcassets/Login/login_arrow.imageset/login_arrow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..32e4c8fca3374d7af57762f2d5dbab0eb751eb6b GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^ia;#H!VDzURaV6VDXjpX5LX~ADjF&;;}1k~GX4@0 zq4HAx^3q@=8>pa=ATJ#tCFKhgNpIY~8>pJMB*-tAfoIaMcG1S~uZuWdid1*5m<^OD z_jGX#k+_`fvA>&Xow~u7d#j+4eG q*9eyFe0hS0tU}pB6t?j$V_}%7)?1M`=Xos92@IaDelF{r5}E)A14l{# literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_forget_password_hidden.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_forget_password_hidden.imageset/Contents.json new file mode 100644 index 00000000..2af2952b --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_forget_password_hidden.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_forget_password_hidden@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_forget_password_hidden@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_forget_password_hidden.imageset/login_forget_password_hidden@2x.png b/YuMi/Assets.xcassets/Login/login_forget_password_hidden.imageset/login_forget_password_hidden@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..83ef51986922e4884abeb47363f4dbac04aa51ed GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT;!3-p4&y+I+Qm+DhLR^9L=FNv8Xv>x(K*pv` zhc<261QFS|asT%1hauuXHbfAp0La*~OBHv0|mEkJ-TVr(KT!K|NsAg z!-fMu5(vNs9tJW_ow^D%2dEw_3?epe1Zq42Wc>a64QO=qem}p z-h31&1yT0s(K8?$DE0H_uiwA_?B0EH>((P*zkYxJ{`1S1?;bsRar^e8OP6k+K7H-T zk&8f;PoKUzckagi{b#ptKX(241NA*Q2Y|k{E(!7rX882zXYgcw)~~OXID6|Xk(hEwL9`F$(=LPGZnO%M4ruWh~j9Anj#eo23q%uVkeo#ob;s-8$2J znWa@!eY1Fpc4|ac?w9Br0p*vjuyoz8;7(8H)sU5y-k#vZop#wntM~I&DZ>v%hNTNO zr%tw7a?n%s!}_Ps*jHLw7QF~lpK@92WND8?z_Jg!)Rt%EY-8bJH|#j!D|=*umO{~G z52=TehABeMfijK^Gruu7FXL2WnIQB2slm|&tji=*sy!<{ZZhKWh&<7MBz57laLzVs z%aG0)RbMxMW@-L3fh)qeeB$zDzjZCPth4jx>CIKTa{F-0^=}WA*9%3?ogDp2lJivi ihW_|v{qb(scBQ7JIm7(8A5T-G@yGywqR` zJVv@m5RXM067T0c_sf)osIY{o1R-{@_K)3j@8|dVe!id2z4zQde)&FLZmMuSI1C0; z#a?&u17CZv3>41*#5-@JVK5mVA5T06loU!&ZSC&>DU@D-R4TyUk&y+dR0_)O?%{X( zaf?a?ww{)jS10~s4(3S&h)fcR+17TfG&ckBRA&G}qYY9h?I+G-{Up^5LENLGqth%n z0`PaK|270IppePEWHJkM!2m&kV26|H|8UwpI5?0<4h9FOMn~t~JNEY_ryOKC96p=9 z%wkOfMI_pN?>QwWm+U<_IPB;cXl-Qzad&rrXGi?{HE())fleP@UEN?ZCup?3t*y6w zzHn@8erRZ>zkiC$T@whl#CA=F;7xi30+jO$6hnrCN8>!O8Z z)BH*u=;&K$*t2jzO^h-Ye-k743HmNE134JeP>g>df7e*6{>$CEbMugnvX#2oHTg@lC5s3q_)cCv+NN=eyE)y*r38r4(CZS1CLoq>)80g2veT=ft{B^ zRA6=lON0MK=1kn9iHJO$^R?BaSQA~>01up^f&BAb~!Nn<_F+}v&2PUtf&HbOK8=c#_ zZ@?ajqHLSXS_cL2HMfQBA7^Cm;)g#`Vuehv?H&5kDrA%qNHU$6BnlF-!#?UdZ-cie z7C0e`A^(SsF-KJUuF^~`G^A2}=<4vd!<00onmsb{0!xi+Y@BzVp=(_|+~%p(ng~=U zS&z$Is^YCEhTZczztC=2V7y5d#tfzUa*7-xhWXUH<(9yVETC!?$V57-r&Z2++{(vs zb8+5PX=agYDGbQ*UX5-`!YeG|<=0qkWWFkItwPDQ{4=4WUPPE9kF3yj??s`>+-(7r zM~*i#mq%^VG@|>^xY$J{=?0B!txFUaT_oDX5%=pv-O0x8O&pg$OcLBmhua!Cn?Kqw t%??Osqt?e`Qm-NF;mULF4Fr0HoK%LL36D>WgdhLIU|5Wo3&|-W>tFs2#Owe7 literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/Contents.json new file mode 100644 index 00000000..f970aea6 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_forget_password_show@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_forget_password_show@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/login_forget_password_show@2x.png b/YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/login_forget_password_show@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bd159a95fe3fc72482d12878d187812088a77c20 GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sApt%iu0VS8=EEB|?gx?(v}x1f zRjW3vTX$f~mLo91BU`o{-n8iuLS z%dt=N{;fa%>&4cHtlBnLXV(j!^raQTc^(E_EdORziN^NLC{J3ufA!^s4*f|U_NOBG zcTf8Km$B+wn4S4-8$D6)MH-2#dbUqU+jp)1nQ_Od_|+^kL>{-=WCkeTIJwlpck-OB zsmoku+fHUM+Pr&4@`UzB>dDKuWJcY|c>8SWM$^4-W-EU>voCeW=a|5l??=mbzu;Nt zd5O*Ay3gB$P8pe<&joWBD&)4bh)l@hygJE3Y%PbYaNpEB7QZqsw4XQJ-tti`Ug4K$ l=@s*fPZ|2>J1Bh6emCDmRwXg;NCVKX44$rjF6*2UngA*}$Fu+d literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/login_forget_password_show@3x.png b/YuMi/Assets.xcassets/Login/login_forget_password_show.imageset/login_forget_password_show@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..d95f1a37d522a3cab327f1cdba003138ea81de57 GIT binary patch literal 607 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAjKet=JiE0Es2`7jV|*l-TQKqj|r zIRfEA7@IbMRKf(0Y~8va$lbd2$d)ZY@k3ztQ6PKA4v+{;+2M^Fk8Ip{46NpG{r~w{ zKr2;Bg8YIRev7hxeX#T0t>hQVtMwLFB7W{$n%2%Gsm)8 z(Wi{_3MROR&UgAEFLk3x$j{2@Q1p)3%T8&`$YGcjTD>CR)XIIbFQ!ac9<427QT^`J z;zw6Z&aUkEq;CHBu$rY|G)qE}WjOgOi1ugv+``<9;g+w*3f;`Mbqf1fBbyZ)NqD`eii*eJgL$fd~au;xh`z-VLeboFyt=akR{ E05DxIB>(^b literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/Contents.json new file mode 100644 index 00000000..9710f08b --- /dev/null +++ b/YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_gift_noble_entrance@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_gift_noble_entrance@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "localizable" : true + } +} diff --git a/YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/room_gift_noble_entrance@2x.png b/YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/room_gift_noble_entrance@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad71f92a5c8074ad20c879dfd460c03b6e91786 GIT binary patch literal 4875 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 literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/room_gift_noble_entrance@3x.png b/YuMi/Assets.xcassets/jm/Noble/room_gift_noble_entrance.imageset/room_gift_noble_entrance@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c781e9b350a70926267d18c8b9d7b8c8f3141a GIT binary patch literal 8133 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

BcVCbO*RztV?}WZ|!q?Veim6 z0W--LvD5D?uit&Jxj8yd`)^L&Zad*1fBdWaTch*f(Z?lD-IGTl0lktr1;90PeoE5MWU1c4<)>n9P@EWzoJ_I?HR*uLVbXjPxiSuU8fSTIXt}@Q_N+%= zGx8lHAD6sb4Az&S-#g#CdHbbSLWL8Y@e_AP=W>iVT86A=PE-fyKdd&9rgUnxdePLG(J5Eq&d&PE zj0|akxf8D}uU#Wwb8g7vS+{3B`-BG=c|UfC?+PMc{Q2j_%PSjOTla@b+MMN2friQI z$!c1De;h3|HljK%@5GCm1VSCSn>>q!Z}pyg-P~I~$;)<-e;jeQAM&uTuD*Bg z-l>uu@(m4NO;%TKJkehK7dYB_$;XcafiDm z(!}m@TF8dZ5ayd|J_+m8C35BB;aIWM&O{CvM@OoNypVqOxA=IWtqVJcnFe)Y$H?2< zx%hXfuf^T%se=oG4hQ*;s6UtC4*BY@8crQQPUL49`GY$mzfl_OD36)0s}M>sbEQ+A zlF9*)7fhVAQKuOkufwshkkkrwU}BIYJn_vs`G|yEGDXG)+5afvV<~xR2D2Sm+!kEO zp_-Yfk8i#yoghtIl*-Z81u5ZX*KYE#_qoy6@)YE+bw75LkG^xazqsE~ezx_)fn#8x zb#~TS9`;-O(8SPOM|ts2g)niZ5Y(Lx1uJb6VWzk4;Hqc zWc&FSU%%GFzg@vzc^MuWSp!`^c2%VWUE-}F9ic<5Pj^!tC%ft`ruf*JTTi!Ss7jpn z^Rmg_JY!*os+=FYKAgE;6NANZH9CGWDlqLVZd$v8-SzY1r|5X=)Ht*!@DF%A_6j^K zckN&59{WeR{K!QFqLoWR?Ack+s~`KH#zk6q!_|n>>Aap$tH_E5z|QbZ_bERzGUjwf zGR8B**REe3eu|89Y~(I!2=wM9OS*>QC`6secnbeyImNQ;>j2L?nNV%_q`@)vkx~O1 z3u@7|kA2;M$9A(nwD4c~@OoXUXy3>6E?YTzrw;y`Wf{Q(U0U7FIpu7u@o6&rmh0?Z z3=sT%^SLo5k%B2@#%LeEp9!Im>HY&}y&~g)pA?ePk)6DN%6}--*`VK*0Z%*C0sc_) zx7Ql@iqP?EJ~=Jo9qSK;pK0M=zUx?|z|*GAm9au0ji|(VRWH5qt!E<0-Zu>Gv|1za z0eq^}Sl-;!6^b}(1(B->Iir+~tZHc)kDxZvj>wg$R3nqggjgdPN^vd3-TwUyRPRk(^;g)UWWHrNyF;!JAqwJ$}PcL9?*pf#$z}{ zcJ2CuE7S}4OfBoQ7UPLxF=L%5lBfvDOrT}m2);_FW5IJp`MW7Wh~7rxiXfx}FW4LR z{0_FrVar?1V?U+y!)rDC!6&`5o9FJjyQ^dF;_&6~TKJEfESTvO_$3Q_BX%gH5ta1c zmEqkJRAJb3&Wgi83cUx}nZ(X(Zvwnsk~J~vZR?v=>bDoY7`$E7d}jY7M@vhmV6{hL z_~t|~ShD{qlu!OE{6j2n)f*e2Gx(-28u)uJ(C5vII+m@RyC?v5HT?6p>m+!2ylWpJ zjs^-HmEQQ)qanJmR#QI?SHkh}1e9fU_9aNsg@B)+`_)hI!!u^h>7B45E5K}@x6-#J zw~$s_tsIa1MaR5VXy6ZJ9e;tJ>R=liWlO6Vt=-?AYkK}(CDy^>6K3yvSU1%@|F#tH z>c{@lI9>BNr&h5a%7o=vegrxDh~W{M5g~vn{RKn9(e0r8Bde;lI)4zSk{sUcT$HSTyj)qMxoVs#dul%63SDeVE+~z3Bn*rkJ%_&-IIn z%Fb!?kf&|NOe&gK0{EqIJG*0T-3cn=dl>vGF1iklZQ$3g_4bV>sRqtg%Fwr>P)y^h zQNd4kFk^;n#%fm4ub=a|4*mrnhWBb&?~{Y|@SDhtqn_rw{2L&@TCAj>>kvEMm`C1U zGFmR8v>E`s&K%t!Yt*3f%=c2w#8UECtjJO;$?onl4nCn%gpUO~{gefJ-)LDrF>8p9 zxf(pAg=c0g*?_5bQNC*bpk3Q4Uh|)+ik-rfJ6BET#O>(KH%9u!^k-Yl0N zoVj$cN_8Bvi*^;i0om!^KEV5ZzBGq3a%g7*pM$1)|1#JICDXO+v{1pXU-a&?1|D15 z1H~)Z!XNwj=dfg0l$p*jqs#$KX)2E!21-ak zT+^I{k0~xk<18sqcDe}f@-9uHH(BLuw+z3INVBW^JbgVpQt2#)*D`8UlN^*R%~T9n z>hVr?S}5+S<{JFUmJjvtn=$Kbu7}5X*S<&@?*^ikLOSiULBQqrx2^8s%W}RD9k!TS zTc>e8PfGKvYw%fW&E@Iq>nX8@ zNH#f|8B;DmGcKWUNznslQ!r=q13xXiOX0qm}RA9 zE?}XB{VtnrNYC4^CBrXa_p;Ph`;CDkEwTqYYw$ZR05Q;m zSH8{0&Z3bm(D03)B)h1U;Dkde_~w}(w%)j*SaP)RhY23|$3HB`uBHYLnadXtiq>{% z1=!_KtnMyLKAYtO;YH|o$Ry>F{2lV}U2K@7o7U z4(9o7qV;y`r{^Eu8EAPYKlaeVS)Ms7C@4jNUu|%^-QjSnw6KRTxrt(7D7tVH4iY@L zRq=P8nUG6~Me2cbdAe5!=(|S4-Bc+cNgIl$z|WnJ=mfVXNIy?{`0UP;WTlcNRVv@V-?{nh z;ps1rPXs-Bc;^|s)=R04xb9x){(ty6|AL2p*K#&5QH4<$U$v?~AZqQMbQ1Boucs3}!(K6N)yuX(#vx2ogdrC8Iy1=YE`d=h1uS z9YY@!1V8ZSIq#Wwobx=js(}Z020YQD@Vtr^FCm^{32{l_WdpD5hs}+*jkQ+ta@%Kk z>^`lp4nJ}$Y%vjd&@=qhSjmS7o;MF=1&iVJ)l2F6l)m`13iS=|4Gx+mL|Q+c#LP2( zxqKckUQN!Hv37>vz91_3mGPMcZ00P?BXuWjApS{tJi zJVfYp8zg8$RcTq1&na#o>!p4IVmQ zc(BvrF|C}V)&|}Pz(6K_A zY%q$R+;+7+vD@M23_MPJR?|b>UEe&|+dEL;!Oqj3;nQgcbQ`=g&}g?C&afv2Bi&jy zi_Rx_Vwb+xD&KwPr?cwLM?P!@o6R8u4{oZwpcA~5K5csC$eX%5t6#CJiV!zST zR5*^>gIj^`yX{TWYn7L24|D}yd6*Y=>Uyd>&-%vJx5KR#nF>`qX;{9ql$X-$@RjVg z7xsB>dgv^?DC361XFj{|!ft~{*B|{p{23();JjOm#2>bUO4Rvwc%VZ*UGTsTfql+T z)f-(Vy$Y{g@Fom=t>?IN9B=K*>tEOEbr^|l7VgpKdB_yrI_p6WkJSTb<;R~>jM1c!;;clW*E` zzhihQyk2=I`nWdit*#vF;Q@MVL=cwa-j~|*HHRi14?N&ck4X9j_;E0VUu15$c!!ir zj?|vKl(F!U!Own98`XaOczYkQ5p|A@um^@b+5gyT>@J64u2Q})|JSFW5K0Q6sE}vx zS^QP3QPD`OG$aJ#oDdl%iSC&{O)PUdpobGR$3tSsUkVKQ->8^iLlR;rB1R9133fW# zv?*Z8&xoR7*73$#u}HFFI#DroJt{^I3A(9-1by!_Bgp8*Imu^|FHOJo5<`L@OGuEd z`8)AYZ?fZ|AdZK6C-G3vZShc05)Xw%c`Y95<=J?s#f!y5y|TnZS*p*$U`AIP40iqU fg28Uvg2Da)oHOmm>AG6p00000NkvXXu0mjfi_&jr literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@2x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@2x.png index 9de7f52ceb169abedde5e6a80d94be77f0e5fc18..b00baf95c1b3d0961069217ed4312201aadd5d8f 100644 GIT binary patch literal 776 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sZv%WnT!HlF&4)K_ItU~oX#M*2 zn>Rzb8#Wx=wCV7lKYurEI<#fWk+o~LL(~8TAq=44=FLa8Y&p7l^C7Uvp*3svU%GS` zC7NE+bK*rXsM}Q(q$9L>F4rKrR`wvJ$H16Da zV&A^gpFVv(d-gh5@Zi0B&mejsYJUFwb>YIT-MdeI{rdg&>-R5Syt#e*(b1z9w{JfN zRPg@&=SPoTT)lel^yzE+_n&?I_~n^1*A={clz<+#EeY}qX85H1_2Fbz{Xef|fBrid z#ChlXkyXok8|)qzhKO^o?X0Q{ado+V@#2w#^QUTQe*N_6`IEF zex91RE`{4LNyhX_(Yoc?v+kXq8k(im``KDWK1I4!q*EcZ;?4ej!bx%q9xs$M5d3t1 z-q)Q9F4;vdul|~)cT#uFg^&X8ee-t5UkQFy@Kd&PUFOb5$1d-i;eS2)1Je{6oz%i7 z?aHSY>k0m;Or0KoGN63c+j$#Y3kyDd^sU_%=yN%I*`~Ae9juCsHoUqL5t;ub(`l=x z{Iwno)yDCv9+}Huh}GCO&)`|e!=j$wt3b}3P;2@vW$eztP_2FOTERLF5ZE fuTjGAA9p?T;eddDmdob?W0=9y)z4*}Q$iB}J!GzZ literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Ew!3-qLWqbvIR7HSKh%1o3c=6IjC;&1p0l}3k zSAgWjizt9h~qUi0og$@cC#>-m1(``e8j_xxi0basVw_VkM5B`;RK`@QH^ p*X*6MV$OZF@-ti6vvlhFvyvC;L?Yfj^#er#gQu&X%Q~loCIFPB@J9du diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@3x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_hidden.imageset/mine_setting_modif_pay_pwd_hidden@3x.png index 82abbb504b1ff39dd00edd1d6869af6130e1b9b2..91e03d23ed4c8e0053535ccb24cdfd847f30ac27 100644 GIT binary patch literal 1248 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`ol6-Q7+nH-?;Z2*4ZrXHY+ct!Dh#_F|(AKRG^*~vO6-U>v zKlK0qf1t*V8$k>p07?O^1~S0Lf*6k;J>R(TFp#ln(*Ym}1jmkDK7IPyzkmNATuc(E z_wV2Tt5@$ndh|R{_UqRlfByUddTqy!V-Uq)zkm$iw(Z!C9VfPLKe1`kp`ANVZP;*N z&z>{8cAfh5>-X;6XO0}XxNqP24t&A&1X!C5Q!^Dg7q+M@5%AET{dTW;rjE3a zzM}2_|NEwioJ%^oar66q`Z8&2R$EJ*?WvKosrc~VV6*7I-lai1R%FEbYPNZMOaHU} zUHJ5Axaz+r6Lluuc;vO&jvdG4B%{f|ALs`gA2mGJ(l ze}DUft_$_6&dYMo^frpjzSR1opL1@EY^;r*nS6Dzn%(Wwr!(D`{kQXuu+mrD`a9f2b2d*%dlKSTaP{7y z6H}ZQzS}8yR;%TbMCYqbFMfqJ8mqBizAz=yeO>~`<-ea^*IoSloR`Nsrguruwtx?b zvwr%1>)c{htC{S0azazPsKwKwDVFzF9ocq!PJKhV-!dDOT_&m3Lb4e^cjzUcR-q}i!YPQ05DsmXFp_o&!W zkK@k`Y%UABmOPyQhv9eKw|_qa-1lazJ#vG=G|zuw`Nf3g!J9gCuf06B-(^wgsU3tm3g{5naEw$@*CvKm2UFNr- z``4dK_9j;z&$|^W+~(c>u_SCc$}iy*nPKtS-`EzjWyLiUkk!!npp_J~`OT&M)^*x}Gtg?eG4s$dC2F PEXLsJ>gTe~DWM4fPTIrN literal 751 zcmeAS@N?(olHy`uVBq!ia0vp^20*OE!3-o1P1NuJQcDATLR^9L(W6HX9ol#9+=a`R zuUxor@%;IV7l72oOP4NPK5^nSkOZR>XZHR#oS+Fvor57$;x^nIuNF&gkt5>hxxN-CP^&7Wt z-M)MG9{;633P6V%lmz(&Gq5t-{psm;eD#>)%eHdWU-yqMh!+!hzt{YwtnmFSb0*dm zr9}iw@tj`0Y)Wf(s*w(3Uvm@#1LH|g7sn8f<8LS3ELs&H;M%xC;F;ruj5+N`G|S7G zfByI1Eu%40$un~5@i*+NH(bvQGk5=WTHm#DLiqH@?LXAtUjFm4MXvAr@0Bs1&iA~j zc+vi}|Lv*y6`y}v>Qqc;jQS?G;rzU5b!wXGlM7!SR**VX`{P4v5R=2o3wpH~1|d}` z>-4y1OujPHr~B^?*ZRM9`|USr@W=h_mO7tj=kT!jx$OUYpR$r>><$pIwrk8R|GDzP z$=g%?r}A^lrzWS|+jqE{^TdWjpH@EJEGf{n_Ugs^k}{%iwdGIMy0zZ3Sl{&bS>9Sk z4X#|5flNr;4r$6p^$a41Iddv79cl-n*ey^}=n6DVQt!BrUmFZU+atgB-tl_ko zdG&Xt;GU}`_oNusujWhKryTc!S3cp&lgEG7KUurgnQ88qTkW&#CfWKsOw=+JvN-Z@ z;kV4Y{-x&xyfag$PIF$7_i(ZKyC<%ve}DFR8FO`N?REFQ`;H1x+kTv@dsX?iJJZ17 zSk%7r-T#)JzihTa?B3?df*Pge@i+U(d*zdqIa_r{`q97}I$POI9)I@PYL zwWsre%dE<+yDx8hm-AA1ow)mdlTA%O6l&+6jhrUet@HP3_$T>kTK3Fyx2YTjCI|*k LS3j3^P6?E?+!Sh7 z;4w)Mc>i1L|Nr@{*~>E4_8tDR(D=>dw!0ft8V?+Pyk79^jbmO%b}9hhqqOzh&*55 zBzJB0tePOZkg|D8fol3aT^vI+&flFF$=7Va{oT0x{L3)c@Uk0EU)ic}=g~Hue78+qf?q~vPY1t2 zoWzW4E-t@kA4qg&JHg+5npk>u|c)Vz6G8N h&pv(WTJ6SPO#9dKzt(an^8-4K!PC{xWt~$(695;Xn^FJ( diff --git a/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/mine_setting_modif_pay_pwd_show@3x.png b/YuMi/Assets.xcassets/jm/Setting/mine_setting_modif_pay_pwd_show.imageset/mine_setting_modif_pay_pwd_show@3x.png index 320b3a6109d7e1f4f775d1b192147524ca2120bf..3b2438be7748516b2cd3c3806394d60b952f72b6 100644 GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAjKV}MVHE0Es2`7jV|+<0)ymP1>% zfY_Ti0~tpk;xLhe5bmZ;hj#8f1``A+2I|_p`3O)1jDQTNMu>W#QD6p8`|+(?j{@1- zwjJBCEgfl8gV>-u)fn$ zMj*oVmOCkAFwo z&!ri=cfNV2f6kuG;>?^zNjn}e_%(y|rRKMs6$idO3YI!kcVyExA@)!iiN#Zl*!DR2 zC9Pe4X@`YV35Q5xIhSvP=9X%CxvkC%EGnj}9X89iVELLPFVDyR=D3_Fuk`lGZ*=D! zeO74J;yP`8^vO?aI37NHp7zl##O1`+)4b={CtKdrdAdg7VEMZn3dvmOA1~VVJiv|P z+jT!#>D*_xZ@xagb*_1oZ2aXIrJXE4^U~+LPH;H#%3!zMq~osB#cih9aLw709BnD{ z&h6bAt7}&nU+yqHwRyS~*PF6Rm2%;{=_h?#&YY<8N!wYs{q4(#2Dh3lZSSs`yM<46 z|Gmd-@2~MsyR2SeKVd3+xh=cZ&#g13du`$<>1fb+$z8ekXn1Fi*`$Cg^&4N6M6&0s zc3ZJjJ7n<-LC(@$D=stde<(On?qzm}SMQe1W!am`{%)>bQos4@{aXUzz1P<__^fbu zS?#oLzG%?uH1*uGddz$E4pqgbWX0cJUCW#P|90lr>i-|iH(mbSyW+oc*v4=5DG5Me bAUS_+SK>uqu_jAlqbm`KS|Ns93 z8OM(wKX~xqrAwE=f|oB}zH;&6MIZ%K0TBU8oj-r^!UYJraOKKXp!fw4xOnc|h4bgn zgGGR{m(HIDi(UkZpF4I8q6}yg$S9!f&Ye4f?5kI=-MDe%)~(yuu3gvMwJsLq%90?z zV1`%wB$MMRfw{m`>nW)gk?OSH1bJthaOkrSP zH1TwC4DmSrHY9w~VFe!38%Oq*TiZtS{`hx1n(< zY0UTkZ&*ER>qRvMl^ZU)tHbLL9RGVwe2#yVh4{ZR`+rRK&lXNd-|*90@Y(VC9h*yL zF&cY6{MjNu(E^TP$(c!;??h?mJSRy@7>&vC1nWr;r;*BH9EVt=-+-5`4fUXQdvihOReP zUdhS%rVr-Usl7Y4D*9-ovcUdLYq;Jiyi3vv;ZGKS+px67S1LNJ| oK6NThXDB+mK&Xsm z!Lkc_GDI~F7fxnuIjFXlN7So@bK~Jwu5t%S?(zdmA9N+&ddPNYtwTf?0|Wm=Zcg7F S_Q5~{7(8A5T-G@yGywpf;6?%f literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_arrow.imageset/gift_twelve_star_Banner_arrow@3x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_arrow.imageset/gift_twelve_star_Banner_arrow@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..60fb2c65f18f6b7ae1424994a22b37554c950f46 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaA83*`;xB}__&!+r;Hue8=APGay zCqvm!r~C&Zpg4$}{Qt%5|1YLqlKf%?)Fx088oOU|12=Y=^dI=KIQ_+;0YMmbLYi^=Dm#Eyo)p5J(#=@K`K%H_zopr0JNQL(*OVf literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/Contents.json new file mode 100644 index 00000000..e7d223a2 --- /dev/null +++ b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_twelve_star_Banner_naming_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_twelve_star_Banner_naming_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/gift_twelve_star_Banner_naming_bg@2x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/gift_twelve_star_Banner_naming_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..728dce66ad9cae3e5d82d98c6b46066c411e549a GIT binary patch literal 12358 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 literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/gift_twelve_star_Banner_naming_bg@3x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_naming_bg.imageset/gift_twelve_star_Banner_naming_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..529435a9e6aeb2986fa37d6ed9b321e94260d694 GIT binary patch literal 23594 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 z000000000000000000000000000000000009syf+ZEc-ucH95}002ovPDHLkV1i@Y BDY*au literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/Contents.json b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/Contents.json new file mode 100644 index 00000000..c01aa5df --- /dev/null +++ b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "gift_twelve_star_Banner_rich_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "gift_twelve_star_Banner_rich_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/gift_twelve_star_Banner_rich_bg@2x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/gift_twelve_star_Banner_rich_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3347c73f2918c8e259f5cf79776d59fefef0f0c2 GIT binary patch literal 12183 zcmV;IFKEz-P)rg{nwD%rSSaIjL4Gz$c+76P4`wu^k-K4ZCm|yV*bjI{>731fo%W5k^g*W|H+U3 zy^sHRW&eL_|6)@4b6?(;djI^?jiZDA#*6%NUjD0x|Auk@$&dM+fB(6T|FVkzi*)~l zZU2*a|C)XOiE;nNlmE7j|E7iij&%Q!cK`Y3xA)|$_~oy!iU0WGrugTx&X)f9>bt(1 z|DS>X_S~2D-kr~x|IeQP_u--c{QURYkHVM!(47DL@~OI(|Ni{ql7IialluMkuKMr9 zTs&0Gq5u8$zsRBgy^Q*`lmDuW|NHBr%A5cBY|F(?yEf#U~-?g@y|4uEJ-LC6)OjN_7|NZi|_}}}&XG#A2 z?6^-h`|$arj{p1Yu9t)VKO}^)k9Tui^TCwyy<0!+*RrsS^~{$4mUC?N&iR>m%QYQ% z_2kX<)}!*+?c>hAtd;-d$eQih%;?IDVm7U!fp%#{Q^ub0;mhrQU9GyC=JMgd%&(Q> zxa8---O01R@ZYPchx2+>Ve8JYYXqEo%js^!OYRLHa1p@aBsO{RcnmeQ~HUO;8$wVu^p^uv3ohGBuolgf5mq3Uq>QaXg$x$28J)45t| znpE6;V$h;Ml-HZLcU!%?Q1i8W-=#tCxN&=>$qCi~000$qQchC<{u}=NJzl!s$+pvv znSo`@qkV6Z$mZBT001mHNklg(jo7b7bxOVEz!1EQV^F5|KEPx^5^6G1ONa400000004lS;d=h}wocSTqtQD}^y&oR-3jtWnRi4T6(@X%?a^@=1n<(PSgT)?|chXgv<|D5> z>c@oK^|)t7ZRJaSPE+HKs(2-U$*h;7DtrjHNt1E)kw%MA-v*3hOlPHM;vfEyGRnv% zypX7n2!49Ux;6pT07z@$M3{(yxVzk zQ*jtZQp(r5u8O-fQ7x~L_Z7FUWE{xgZO||kf3k0WF>O_G9A8;Bm2Ey~B0O<((>@tu z2yfj3EC^(S)jMfwLm7H&BWaA8bTOkLH)IK6q*?DptA3 zZ7n@Ly>_id4Y?FWiDa|e*%dV!-CDagJ)M5bB%#XBqVKLX3Jbq7Aqob2^v$Km^ zwogoZ;cp>*Xkr|{rf5v#xn7MJagvbcgf<<=6!9gex8hVjn^k^>V>7x zcEjU^mo9n=nOvd>fiqg8D2H7@gT@<;g3w3^jY2(Yy+EPfZnq;+&l(?d9#lGRD4J`} zqrOU|*xS1p?fHxYtf##m8Vd+?vw?_;k;pjSh=zI`j9J5E5Dc=@@l2nD-;)4hMhi?xk|>G2 zVV7TvxCkY!Yg}j7F$ec!5d1BZffBbNm#WA2vHI=QP^mGD<*ci#vkPQ0q7&6AAc*KC z0fsmwWI8g1@aWNl(8)`uhd9YiCXZuz`S<{7jBN$O?aMdq&ttU3I3unBvw4KQ+7&{41bBq&Q511 z;;BxIO!SNlk7Gk5^8P(+|62=<@zR$mrts%IF#MJ6kek!02BHx%*a8-=a*YAxwFqO| z{N9*qYxB9e#V-f-M2`f_b8#fBLF0_mppJ?KHyY7S0dT1?+z}*%@+wvq6nLCVH6K@q zy`iqFAXQj4=Okh$uY?41(PRlj8g$BtogS!*3g9yDSk+a=c{3lMpC8iMwFl`qt!Y|3 zuJClM=^nce+ti?&p(dhR*`^H$YT(zjRS+(;7+;y(&eHaSTio*IVV{dow6vdVj9=2A zaYU9OvZe9^Vc=NV3=~aBHBomnhvRH<>R4{Hk&#Wq>1XAwr7W30QnahGo9lABKP)&b&Z9xY(_dRgYj;xD#@)>i@P+Irs;Z6zA@S31 z+H5bl>6$G6`V~x!>tMSamYqNp1;bGCMYLqV(Y>(mb znd$+bUp7Agvzyt8H{N~al_(^(k;Oqh|7x@| zRw&uW@WHQ;+fW!9^T0hOSTx5Nu%|!+Lwy))EN5f91ySzh7Ql{Pow*KcAh2$xRW3L|$d@-c}p$Z0`R2^S6Hb>7CE6T)%PS z#>+=S32?A~{u7=2F)1f@PsV9f|YYUBDccbJWlo|@4619;K%(djv8qsm6gb(ExfhxmVWFowewp<`AK!qldt#n0`y)llp;v0E=IIF;C+f7?t+Bf~nNI z%U8br=*O9vTeof{_4LU!9w`O>FOUweH_v3#V}PjyPwz=wac1WIkG{RU{6^}DVgA}8 z<1i8Lg@95i&fap7i|5LDh*j=q^`UT|%t6l$cJ!d4z+5y24Y|tAro4bhgp$BwXngbL zO+({dkF%E(iB#(CZ#aX4gJ;j4KKC*}eR~BnmoHuV{?F5=&z>C|{6^>NR4U3|8*B7u=!GM)CZZBdZg$K(w4?PL zxonS}Vj+^8i&Lz!BMt-p!CL*k-ad{@ty40-*`o(o+uY2}ZSDsMXk~GNEPnoZXl!I- zP>XaN38hlM!{E|#0;MOv$*fIS0r6GI{MKk1=-6OtjAQne_Hf zPwT_iTH7X;jvk#b&p8Sa<5fbrOyI~1v^~GDDXJ`n@HSY1P&Q|ioHC8yau@M2m23F zJ%QLyf>Paq*HIuaV9EGzZq7EQjXI9wsp7*6ed7yX8)Hl=31*^f8H1KKl{RUbRJ0I` zG>R8X!G~@sC<+W+mpa8#Y0;I&b`@9)*owu0Y-YkrC4(_oHy$S%S@w`UWE$O!@rB>t z|L%G%n@{nL@@acdzq{*Q?{mNX?tjN#EQG~rjqw1*-S55k(7}7(fq++gj0_Wl4K||$ zZdNE1!Rejv%mt5U@x4G78~h5cUJWXgGii}# z4uwLcQt9=2tVOF$QfP^b$4O&777b#hA7D-O6aa>G->6ozFHB;V52P3ii7^Dh8e&t@ zmfO_DSS{nJw?w9}ob9crL>}2tJe^5>JscJxeHkx_-7HI=gQ7wYZ+!j?So|VO#>WJW z@4;Vw+;aQ92RoQ|##%$IH3PF57Msmx3>w2bS525=6fuddY1KxfrLnQ{);UztMzh&9 zIz4@LsE_=%n2(fIo7C!NlWBY>SuQ)seen1*-@ftQGcRF3GKt6IE*==CaP_6Z-e0)6 z#cDOL$nKO@8+i(%&6p{?5tx3{hdRd0pQ#8~^`+&vX?*rJ-DQUUvonQx-ci_e$ z@Sl%o@j#}-PvZrUi@_6HiF`rjd;n|nUwST|y!;Dk#Q_mmT$rWtZMZLSH#E+91=n@M zMuWl3J1S6ZsqR6~482WX%o+`~M!kUQUE%TLF1^01u~BVYoJKCU8fwj0deOyNqk9_4 zEJjlgF|`98?{pvJ9{=`L+|Da`F24jj@?5@1W`=_s>4WURK3_o0*}sm6TCH3{P-f5y z%T7re(+Xhf4_zof)HZeB)0{%l>ein+qtmr^Xtitgz@^pZ#AuP1w=Q7;(Ntw0(-=XK z2#*6>)3((i{D@p|0IF1XVFzN#6ZM`Yd zG5_Dh`LV~zU`AFhrWS~N0tX(Ql9H0=o-4sC)7F0g)A*32F}nd$eehr%HBU^N;py`0 zyBMtZ8czoT@YHCqYIog)<^39i@xZhRY1?2x3O5}{TmbWv^YfF$`Sa(0^PtAw896A! z{b{tfl@L|bp*_kkDUmW&mc>d3_WS~3PCJnb1{D}05^AM#4M9qrg2ryQo5S)P4{6NS zff@U_bWNcJfqKAcweBhU#^h2m!#Jf2F|1P75Acm%ukeLVtjLw0&on+Gk`TahNo))! zo{MYwip+KT^7B`ng7NFH=Wi^w))P->N&Ey)en~bEpo-pAdF)LCH|ol|A~cQSp2ZDlb8W4;qr-h* zVKN>+b!rzayW9cJFL+*n$BD0H7Tm&n@1;CY1xRH^YnmJ!e}5ehjyiss2;_*aI0&S; zuJ^&p?jfa85kv5lNKP+Y%TXz~etSQGA2JDv$YSLZr&2{YJr~jGA~Hc^>AdL+_yrTry`>9G(L599bp*RljimL!!5MGQf^ zsDJ-(DCEUFts!qPr!|$r57_H;I=w-q(me}}N8I|35uNr7X^hwhQk^_&WtApkYzIrzW9V9Cs55Q^#f16toV$l}<09}vglpX?xwSG6+rdq~EGJU(AxVII%Gz`zhHff@AR4SM4a2RDwXh=n0sw6_iG<|)j3}RR*X$<4IdS^fItBWIc5Xzf?j-)YS*`)!NLr67> zZNdLb6GzO8lMk_Eo=vTeVx3Im0Kc44szhLM(3zKpWTvwr{e#>SuGW_4MENx(=Iv&*yNg`HP9nd;eZ za|PC{)-_=eUhg9Z_mIXKO)NKeK%rDP3K?M>|5$cOsocGW{2HUEQ{b~gSGt*^F7(uP z#*&Sa@nfqQoeM z;q7{AN^{w(w5C)5!xA-8Ul<4+?V1UMq7+s~UEai4-ipO#J80p1);VRNt#q}vNo8gqn35wRBN^|QW*T>qmks!<56ZkI&~yC@ zDw>013$L9gmdVUzSZwZKl2WrA+9bx9#+F8CY&kj9SZy*czoy4+z~=eaCvjJ#d6BA$ zAz7PG*pw`d!5WV7H2ToEI96JEx(){!ebN}mKiZki*#Nv`8jH6^e7Uo!P>LgqQ|hk1 zCH#m=LE;G zrCz7NOfIn^n3{yf#WoJ>BggEml%PY~2WW1X&-&QGy1_OsGedmV|A zu*acFAAZF?mhzyB-kFnu*FLd*dpqJQE@su#Zdf&g8ONh~Xk1##G#))OGU6u^MBUy& ziebBA%tk3s^E&F{v@NF{6bq`0-`|8#qBE#aq@38$!A+Y+v60U8wAQuO30bC;eho4E zFr+Lbb^p_G^u@_c;&z_r+99!MaqcFG%_20^f{)aZ`VuWd7jHQ%E+UIFHNHcp|C}@q zLu2!`<@3wSaPxJMU9VsJ0+(=BN4FF#!OuajiI_6al|*0-%l8^&?su3*n`{2c?>w-pEw#iRi}3e-(R7;Z#YveMYv zrU1^dUW&pt#^C8*4l^peoqo(2--91;oN0_(AO2arUMeXPtGnCVwH6be}`2#8La69Yicbr<-&OTC$il25Zdl2x6zPp@|bgg(~ILF^yMK*|``M z1=&B+xk&`S#)hE~5{p!|rzHlZHwp@#%o>wFDc{^8M<3JaC8rNR#s-x=I{(-=q;b6a8%^MS;D#X8uq>Z*n+Fk#AU5h0IgTxLra|a*kmYGVstr0b0-J*> z)gY~N5W6$VV(To{4ei}5f?s3ffM1`9%vTdlc-0VeaV95VYBo>eg|5&~k4VGf2)zml zib&%xGc~^DNL!Gu@V-)_bZ8qJVikp%2lX0S()LnIT)cbSWQ4_xa+FmWEmQB z5wa>Yki^y96s-C*ij@vwoj7kC&{$K~&v2r~kPjjjLF`hUhyyyNTk$R-bb2_ILPZhq zYl>HJk_6;!D*Yg>a}cq?I=|Z{TC6}#jmyN8b9O@hKZjX+<5Z!ZXsT*zYI^a-rWykE zM$7tn3kp~lW)@I~^@IUoObSTA;z!qMeA|(>Fx3<+=eoPYNVg5*^Ff$oyvS>Op?d)} zaJtmcSgI>KFd&XEbbDgZ*mA_2yxya}_WJAR={ckM*Or%;aalMyIe&&UzIwdP(Nb_T z`jDxn`Q}vN@_rh}Kfp9rs-dw)c$-G`%EUSn*6W4l8mYFvkyd{E14 z{AosGgIH1Urpk}u919j}0<-b>8g|09hSMv|VY$!b@+9Trg=FB{J&Fx zSGJg>W=%V2g2e>ya0?`67iTx{e7aL4nM#xBEzKqNi^$?FTOK2g@e>OT6-V^rr12GA z*7xD(DSDiTYGj#}G#-YLi1bfha08A*3oK`;F1DIG7^jHex;?$nxS_WETi;}iB52#t>(ZJO|o$h0H4e_}A4Y8`C?d+46VEZMlP$)-@uaC&{t zF=%WU!je!98Y5^Ug4mk6g3l0(Aa>|x7DHo%jvYRH*anS1uc+9o$cUZ#w4fk11R{>i zdb*AFVNbyZr3n)A)DSHUO2sfVljrfGo;Ze=IFvn~G_Y+OZ*i8!cd3pHlg3Qe>)rdS z)eWzS@@cJjmcld2M?6W3P*Ip0s;i6XVKxz?=_J#5(X6Re}XO z=guvH1DB1sLObW7i21U|)5mLUGB#9O%4_M-;xs)7k6X$YHPuHPizd@akB2T8jXgXj zi0<-`#xu=I-=kS}zT|T?3+&8~6F}jWe)nI>2G2<5&>N zIktNxoSj#qaXxlv$}bYcaw8%U;p`-hsh=WXsyCJDJc02T2^@&qgi|rqIl?TqAKtc6 zX^|{$A)b7aBxVJ{zhw(@@niRWd4HzHcdD9ML&XrPfXc;R(2`~>ZfFp0BU??AW1ewD zP+NEs^I(#P3TfS>$owgU$158a-#ucrLF3DwZ<=WalqM9Uc4r66#>36Z6}BDp&LD{t zI()bSv?7Z+Y2ZsQ)v<^L5F6ZEA@SYMN6F%mUua2KtfQyV!_=U~c`GVTRMbJ^6*|YE zv5GX7Dr25l4PY9>s(mqh;|yk)p?JqC)~UwzWP8Xiap_px01!JWHJM5ImSWLI8F;8I zK>Z2=p%gavFvfdrREgMJf$<>+>f*g8Dq3l|#I{E_D%)zZBnAa22uNaf@X=$SCqdJ* z#=wnnO2yC^$@tB)XoL_nR;XVfjZp>YEsFytYetqe8Rr*%{DcH=IO+Ljfo|9d7j2}m zcA3B=Y8L*&Gi|C|3|g(qMWgAuXD?-NJaNqEKxS5sk;b1lD3cEZYzjIAKjOmQ_U(Q6 zOVEq*dz1#YtfKB7LM(s=z`-vMOKjN^Md(cD&$K*l(1a?$iHO4QMDOPA%Ec)PK09J(Cj@{GGk?4NW49<9N&dLQp{jn+h`U4+HUy zLa!8LYy@Ld#6IvO+fsf|ksv7KIWO*`Or) zM?^3B{+_$jQ`hn`R)nAPo*wTxZw) zt31b&1fF8u|Cj^PNX#S#qKD*wd@KyISl6zF#wpz3&R=hH^v0RS>(*Lr*5S8L>HMyA zX>Gg^2(8=Ry>{zFAxxPuE+}&-`AfetPEmr%A+Gkcvp_awJ3AUtyuP`COua8Cpt7JE3zY5JcaeWgE zEgrb}po*xdF+I8IL*c^?kjB}R1(3#;W&5S<#voLrAsypDQ69K995YrrXzUFQeASoz6?^F7zE!t>rI$D#39Z!f|*?2fRT zgLJH16*1 z=C8N)I`X7(zRPA^=M6*x3=EM8A|Qd2x;K0FeF?nXBjqVWx}@;-&6~pa$B!R9dDUW9 zoI$R!q7VV+S`f~=H?1i!jWZ7GS>04%~(2dfm1Pk4?Y&`OWrd1G*-1(LiG2&q>@4N){{2 z8qafZ2T9|%caar;JRaG_!)u(zOu0qiI2Q3?dUB{KjnR*@g)d)*vmZYWnf}e<^BUWWiY9Dr!8FbHtC3#_thx1A(%# zOwVGmh~Z(Anal{fph6zP@3-2dSpEJ!4+sqm#78nTCTzY~WU{BlO+}82TgESppX)D~ zS>9bXRnso5{x&)jFte!|wyfN2(N?4B6yUFXYMcCopB_J*S+H1?SUyq%)C{9hrGmuz zvc|JHF0&IJLu3Zd_R@*sP-bKR#@YbKaaORr9F*K%nX;)Wc?v$caH<62l9F|C|ZWJSc#LVK7#&bAsXeW*0x+P8WhCF_9cIC<* z9;u&%ZBjTO(Vg8HM)OMa>LOY*p%I)99swhq?Y???(MU0Arl9s$$ZYN`O`FZ?CbBV^ zgmj{DhmAZcl?oO^VnZ+_XuN>q#`0q$ar!2(7JN11jT<-U8~NQBF2n|o_V;`4-5Usk zhgA#?4hpq!k`V+0_wIQxfCbAoR!p(dsnfg!dDL1on(? z1X^P?Ix`{W*E(YpxoD*l8yiH$P%?{C5F^--o|2=9=c#EW(i@R zFYFr{6Bruu(E_5pit8a2SFXfjkeX8I<)m}zhum;4zoVLFwA%8C;?((_QB_T4N}^UZ zk&9O9u&QB{yu|uow*db^JaVhWy`sktd6QvZE_WPUSA6>P?cKMBgE3dwSIniexIYr( z&!_XFIbUWJw_7}RBV*_Z2BXn<65Y-DvHaUaB3FddF~sNB-@bkN^hu#mTvq_s!%HtO z_WOHQxLZhO_hr>|qpg=(O^qxQ5euEFiEP@L#EmPgWD4_Hv6F@3mL>S=bAnsR^!53e zz06>!w`lRgg>$?ew@+kqz9L;yd!K!EZ6f3I`9|WtF!R{H5*A-}xh`IgMx!sgj(Uou zF?pOnF^UWv=aSA_pMavopeq@?=fScGfwml+~zp8Z9ObD|JR?6S=5JVqV0? z(X&%KrC*;*MXog2@Js*bM4-tXzWVN(Q}d z)CFR&K78z|Q(uA8!2HG1zXkptIr*82DQ1J3h{V!v`=F3`WNxjF2Uj}(XjWbvb735roW0_DS*lppt*KOm8vpM zmAN3EY=!(~?UP#E z*6P2?YaEPwS1iAnYWv4&mAk%_rp67u@fCx?<>y#lF?u^D zWE6W}qzs0XjcJ^WV~mpiONRfF6klR$@^_h_^E;UyuR*7@Ka_;VU8@kxyE(z*J|QpO z+Oc%$(hg`0iF<5awzVBqECpgo{Izz}Dno5~f~*huPZLe$DKMRwpK+=YXQ+6X?dIFbLW!hxK}@PBuHNqCQB*)%ux zkWV(b?6vqG*WU5AtytRwba&WSYF>I4ua}4R_}{yj9~rH$4o$+FGB?Z3s-;cZ>x_%J zcf8tc8tW?djH~D)#t#XfNm5fAw%_tMFKf@ZF-xUeQnhp#fXI2s*G^?rmi4w#P35{m z#OR462^|?6PwV_vu_I#ik9S<;UNO*TGAO7Ry(c3o1^@s60000000000000000002+ Z#2Hfs_ZffEr;Y#s002ovPDHLkV1lk^NuvM& literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/gift_twelve_star_Banner_rich_bg@3x.png b/YuMi/Assets.xcassets/middle/GiftWeekStarTab/gift_twelve_star_Banner_rich_bg.imageset/gift_twelve_star_Banner_rich_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..52aa4e6d1753fbe70528519327501c250d801766 GIT binary patch literal 23322 zcmV)gK%~EkP)krG)>s zjsO4OlUGRg&8(?|Z~vZw|LC&)`s%x(f&b8${?wiG`RKOLo&WjfvCWqM_~fb1p#Q^{ z{{Q{`_~otm+K>JBt@q-ksD=NokN@}IoW7aY|Gty^%AEgLI8OZWr@@{7{`A25@X3sM|CogTw2b%oJGYEf#TzcK@=L|DTKh`rwthod3B`GH_h?@6(p8i1q*d z@urgh+^_0=R964|=ygg{`QZCnHKRWzgy_qU`Qo^_j``-%s9;a;gj`+p)aA>g{-lHQ zy;?s1`@OxNga7@>@7Sc|#GW=BdiT)!{nn85;>@*1E&u%0dRngc(xKtH;+c8Og>3cW zyocn-xNK62x}me1eDh^9vE*>;L7Q5Moz74&Yp&= zu$igq*Sx};^Pqvw*TK49KwhYf(uXY4*TJKCWSMSGq06k$*tN*_=HZbx!hB-szowML zr{c_jTCGP~%&ml$QPSb7nWKl2se{3ec%+naaG-l>k!oVNmdl7{tGAivq(`;QxUPU- zYKd%&r8JZ0039LNklZ-hcyej-CKQQqvxwOU;64zAu?Oy#GyJ0000000000000000001h%gFKo z@P}bP3jk;3RU8F?bF!OizU>8oGwzmE6$b&JUGHT%tLAYW0NUH5C|+mPystliR+FNb zZc<8HOHH6nZ83&>^7z8bp5p}%e|#0@ViM$sjSw=`?9I``UC!h?B{jg z9*-$5j)z^-T%bQPMFZEC4@0;>d(<&5PRGxurd)MCRE+(-!nKV$zs|^4Db=$WKTfB^ z+jCQQJyc|afrAph**mwGMyfE5E3B^9XkyCPKA1l7W_&fVL7;A{yK%uww!txH1p%O*;R`><$Cbd3)Zv)IMUvIzU&|NG9F zOUD5PykdXfIo~-`XM0)Z{QAwbtabio4*uESj%v6bB}FdCrdV51)faLH|6~&t>mR7p zsq;6}aBXqtMMZvW8}fWP6Q(G^6qgoMwLg@io0$ZfNrggZl)^@7v;>f>6oauWjrX8Y z)Ty(-DWU0s<_s2#9jqt|2?`5&!5CIEx|O`+8+5F^^P*xblgV_0OgAPp<%~d%CLoGj zkWI0+Mn#31OGUe*z(*-ZEoWgmH(kTj^b|ABiNeb8xE3tNMu(lbLuMIu>ih>8Hp78& zIbbQ6Oi^%>OjDb-fOTet*5RaBlid_(CS#7KD93`q9TxKk#vlb5px4*i+jr!?R$rX9 zAghu7AW>QatK)-({#1ybjgKyLj`+Z&sR=ym z`;N621i$<;IT;;MQ>G~{t-M-LqsiRTlByPn`w#cx^AN_ls$fxARe`V&3z8|u9W5a| z!DC$$b^ePC%O(dWSB(G06;mRt6$QdpQ&@l}a?rtLkL12&5@iFRH4qQr@_-R9FHFw7)ttH8n9cH8X`iJ|)A> z@NdCioCXEOVw&lIdns(GPM!ZacW_76`&Q>DzhT_M`_d!K_zdL{C@WSuCcZiqa*3qGCeDb&1g{8{?zc zDXq=D*mvJ2LqkJ7qJbeq4bO6tbUoW;LZT?c6cOW=W;6t62`02vr_O(pE>5y>$ib0k zMMm&q0X?-0QKJQi(V6E=-nig{DSQnMrijI2!JVn1F-|4L8{j!`zExfNdT}-lN}E$D zU!jl-7HNx2v3d!8xj#D69~<7hCkglSb8U!(zBEXU$ zc#xvt_Lt#q0sdV_Q*)jFFYcBa{1)8C%;lGRcbOwPXEU6jwSo>!U_@Z`*mc3-EDAJf z3oL3XD&mcfHASqvGgaJ_iFapapb2K-(Za^!;yEpy&TgLV4n@`eU{N>4>ME&XWhybE zPNp|EOSpA&adBfw?fV3BZ~$sR6KWK;v=U}flw({|2+wXShbH@W6X#vy-y2PJ{>S)h zXh8@(XfoWeMza%LGINMTgR?QPcnGnSdYoZ%P_`mnF%$2Oci-gj#j6-7?nD&_GVyr) z*oEhqq4R2CX>M_GajuxYV{@`M5mn0&1yfoDq>ANAyLu#1n%hjL&tliFmkR1><3xk~ zM;fHphyj_R%g6>{O^5<$e&JcdtCwqbFGy%g8+*s&-+e_v$3#<||1TcD1D+PYMHz0& zj*^gtg;WKPHjMQm2eO1XcgG-m&lZ@q1)qLo=$zqzlPN%uxUS(3{mR(&Fhyp9OA6fk zf?C)(hvonF`Sj-0;Um$+WD!VHFgX9Xh|8QK<$LE!+SSwx&H92=EF$`5q&;q~S@$4fuS`HEi4>?sDzE34nynXWI zkF(u~O3skFJ#0epa z@+h0aCH}%>ZW4}Akc(nW!i{k8am%7m z(CxbD62?%Py_j-0N^Y+{VNb{tcmj(F*@2$0RT=sz$oV)JyVc=}CQLCJ6x_(B2wJaa z+}3EjoJq{U6GYFKOTS$Ce(~+aYd(K}Iv+oxwwKdF6xl3Hu>xRiJi$ z#?D`FEWP;Rc|6lF8mC(3$LEcC*NI{YFI%Yw1*2?=lB-#fmm(CU39Sj4Wx*lw$Tet8 zFro`~wHn>@)7>F{>Sze}Hpfw275f{H$8A3>U#eeuHH&8jvL@$-qWWxD$%##1vx~y0E)qCQdZkzfU1d5eo_qHjpWbmc1Ig zZ)mVo7_D*OJI|uPeQ#X3vava=6@$rqcl)DiVFXt)*%JV!AYcl7Q?pQjD<&s%mD%C5 zb8}bl$2!B#1gg=6yD;MQd%b~buvqdcC@2ImX$pmrUT`Tcvy4zYKrTGP3z+>m)U5xV zokuDuao@U~vwY`7(Vu(3hcMk}9toRt;D{Mnglx*VEJCd-w? z2nvUaC@4TFn_XF1Ugn~LzNyKoxUYRAS1HG|(TRn-=kIj%#ITm=pBK}BH&Vj+#%!R9 z$B^e9!W31n0$eUduN_>#Lmi0)fiU44On>Y_8*aToApC!*S@Caw=XN}G_7iSLOBflW zKpwJuFe@II!G#eS(TtJoz^RKS5QGB4BnjD=0C#gk(!qg|HGw{WgaL(ysfx34kZHA@ zO>j*Cf;!jT7>mIe#%?!1kqBLT8w=*vIB|?b(eq?gtI!uR`%x!UDmkViJ|HDel%y$^ zMNzSm9mRJ@6Coy_PmGNv5?ZzGxOnz~FhbN5l~n%Gg#e?lA>fsCP-oOMg-hZQgMyLD z3G#%2tI36o^yksCH?~>)Zcul{zNUp}LpUHVR&WlzQ>Qx9UIXTBP%__|R;Fsce!ltGcuMR5_PSeB-^bg7gb)$kzGIiIih zFvyJML&;>Y7@HkF@nirm0553%#B3#$${$hZ`E^G4l%vd_;Y!341$W?Yhy#sWVZ}pY zz#7Ahz^21``^Qw_*&4UUk7kLwD)t*KOdC|Or7Qp)ByLj_{5ELLsWSng2nd6qsZJPy zMggD$0+NuXfF!~l5CrA} zP$-p3h3Gd_^NC8LJ0D_8oPs9$bCnd9Jdp;5C@iK}UB$*|iI_!)FLF>qGDsv-$zoco zR;#mGh3k!@56lF--bl5Ymew*A7R!zj^u;Te4UZeijYI=?H|YXhE;o@R9%GK-_wf+= z+~2Y%{9B!5;HmIeZ!Cd^|GL%wTT~L>;A~Xq6KoaF3E5ZtS;+~7b6jBwK!xSdiBpa1k7O6y3c!wJ_BW9kBT$}7ZIyjgJ0U?X{QFSDd7?md*Htu4BD50h?s2b(K*yXX6e1m`Q;~r%PDa8c3aJVoy8>i@{I_hVq{wR8tZoN!m9rR>B>P?( z9E_T(XjRojVqy7WDeYv6(U@rp1~WUPiS!-Kn@e<=qkT*lMRf3)M-HcgwI6io<;AR~ zWvQruid=z6M3!MR1f1#$WY)68%{SO^iOi!#BrY@&jJYG)-c{i@9@8blyk|B9LLfKz zzuBLU*<7~g&+Xs8KW8~HGX~r3f7kt+`&;*R*k9js$IpMu_n8*%5gtWx5sCQij^Hkf z2_B>;K!lQlK_VycfgAynnCMjmx^|YnL~1HKA4(^yji{iZo2&EDBtK(C)pwzP4H*S`AUOKJ&~Y z59ez{0d!FSO(RoiCjx=$3HGX4i^-{p{NZ3kSS3=k>D~?adG4XLxwpm?1k%1f|M-7` zW3J7C2pt%HzGfk$5sBDOG^8*PdO?Bg;sMQp;|OuS!II#5f~H7ZRfv-gWK$L4&Vg|F zsU8BN02d|>_X1MIRo5MCz{ek>>ANnB_=B1~UkvSa3GP2qkwzF7kViKr(hn|# zg5Zs<{Qx0g;X@Cm2Y8N7K@-lL2+9MZqzHFD_81ox{5$9uW+q$XP(|-mjr7HdMuv8OWli3a7vqObnESDQp!5St4ECJa^`Y zAI?A&D$_S+6cmGlPaI3hDLqV$vj$o2c;eG#8W*G z1)G9Z@#dQsPWOVV4#en-6F1J9Xl7B7&1(8~>hYHb$rZj3GkLmF=~vZ><<+%yxPojk zFLtEQLc|9kWQvP5q9~^4FJJvO!2WB?DslAjF?ogJ6z>1%;Sk>iJ#041C57BJsa7>S zy()>q8JBdhOKjDk{AsEqW)B#4iP53_MyrAylE%5uN`&kaVHHWgd z^N&N@EqxRbXd+~*t75;P5RpSB;&=d@BN*Ta3?vKF5uB+@6p;)%I8mVK1h#X<02+t% z1g4!RDF7E04_Zv|hA_odH zz4z_6Uwk;Xw!TQ50XU}^I#iN(mo8=@iXtFW+~dEz{Wd@22|O;#3Y3W?NTsN^_TyPd5n-Q*qI<$i17&ApcnwiF<3j9$$e}&4&1140 z?9HXr`A<`Gn6(K>a7d&t;0JVxViE`#Ghp|GSD1phi{udK>@evxh5<2=H%LohfE_UJ zq=7{7*kg}9h??RdyD1ti-&lyBQbRhaP|769nSWs;+T9(e|IN?j&#!;?-DjVD_TdK~ zeD(6j%=h1;SXjTjcCQu$FvLB&DDJqlhRWmWt53f5)>|Kc{MA<mY^UBSVEFe4f2UZe`W9dV%nr{QiFD z+A)*aZa?V3Wo}Zi*vXF8Ni4RuGJXA zB(lhbTj!R8il^3IGYR4;e#imYW>E2;qN4H08LSE(7zhCkmfJE@1v?;n1crbW>M-K| zPLqBE%;Q8TAsDmvA<>ka;AB_=!%K)Md_Et=6kA~mAY%&Lc85)%Wc1(+U`(1&uoBGE495DjDhW1hkf(2r_1Y1G%WqU+GpP92g9c}yH=gur zUxcm5cRx9*BI=BM2Mxf_8Q@G6)@7dxA~;79s%Qq!`F!?@m;&6(s(>px-<_O%_{UF@ z+3f7%^vcRgA%FVh7`*We5M7#s3S6@V+Sj56xT=9J2iAi^d4gdT$zVc;8uViqW2f_l zxs{da#o25&nOPdap6xL%#u|&$!NB3cp<<*n3~lfLxcoP9i>e5(v*vImcz@aCKY{qH z3`@|U28 zDwHYil((I~`t8Gb=l=W?6MOgW%_PA%+_5-4y>k6}ez*v7xtt3ib_i9{OUQq2zEfcd z7ETGUFGsyVSF6h%V5Li{rJ2Crr2#S$^k8JX4+iC#z2lw9hAi> zMZ} zhh0Xf^xcc(FiV7?VHUvonV~Qo>@)4zk5t+iK zL;=v+Z8m5@qQZz~=?CCcS|BONBI^Kfna4Z;$`w8aA;nhfrw`(edrq+_ayU(KWG}ku zhWNzj(8$(DR@>kPuux_SKZT)rZZuCwvMzhmN84xjq z6Y1u7NtuCiRaDr0Fva$*^3%tsL+yZno%_z)?z;Cl?()D_A0vGb1%0{*c|4v-jk{I@ zJz!>L=E{{T^Wco&0|ME>er(2U5?_ zDuyYUIB~$nELf}MDdqFSR`jD$W?F1ksKy{>u0bi!6l|Mp6v#o9>0tyE7#KaQh!S;{ zpu)+S0$LCw3u@B0DqQg4L5WcX@kAw!FvZrb&myJ}rjRkk1IO{RR`R19N14daC znQX`t2?Qb*JUY8@y0TZFm>EY8*C3Wkc6XXMgc*l0?z&q@VLlY{gnC}HL@Jqy&aT#o zXJ_ZhZ;~&*I8MlCm&g<+arNf4W@q~Nm@q}NSrq=1iI#533$CzSH14Y>APhm8m#o=>;sLiC6}&_cU`tIPE$j6+bu{(cdT9G> z3a8k9+D6pH4WjkNt^(;aH;}tZ+rys-=2T5(KT%QrQ8{@4&Qi@pfuxl_Sg|f)49jv(%dy|9#04!Vpn7vV2b>f zxZk($+B2uF$%w0x@|>i=l)cnbh6+}=VQ;f`DXJ(vQ7u7t=b(c9^V=)uQM+S-{Sylk zSVZr#pe-5~TwbOnyALQ+FjiB9(Ku)adR`yk9VnwYl-g-ctv}Ya5NSr5V$FSZNu{+F zu!0-fPZ>p4Ejq-X)WS9Uoq|$9Ks9r+Oj>-sqaGvxH3maI?d|$?Gc<}gD*FOb#iZhY zU0;8O0!y}p1e!pmJW+=PRX8OMBbJaxfFhJ0ZW%i#Un80mP~{4hZEV&w(GS&*xh zPH6+}bezZ(Dx3-GftN)-HSG@PCL3o*T53X>0&unigN|PhCL98%51G&5BX}$)kgbnh zIf3&^M~Ku2wo6l}n1Z;EZv43C{s&=-rq4+f$;=f`Op3yT&P?=54$*~Dy+Q^7w#nI# zvXKB4f*mIM-!oC<84!g#=K1}jnGl&LK??^0@XME%cIuHwD73S4XGke0cenT=H8}uN zl%sU7>T!HaN}>>lrWqwjLpsAQTD9sZ6|uJqjhq96qY0`x@ruD0Kux`&QB{pip-yS= zs$-XhDQflD9-uOtVwg9ADNsz$(GE=Y!4y+{9SsdfCdd>iX^Jvd8S8s}fchVsBCmI8 zwX5C26iuL`Zw+RuxhC!DQQFPaPj9TnJZcJ4IEI=!WbA>x^A<@{?$ui_IADsNet{;C zQ#k@Jtd!cODgF{sizna+iTVKvzJa6JA&_REf<9%p+x5PVG8Ys$-5_Sjxs9AKh$%cR zQ=>kMl7K|~WA$5>>1@PG5-~jJw38Fko zHB%RVT8k-Kr!Ym2CG;pc3abtj?f)EVzRa6jpI5%HIUSrZ;IV$<8vn!k25K2++(J}h z(FB3U?L!NfzMvLwmu@i3po**wT?-6EKwj`+Ea&?u14H!t_v^fUj@f@$an2K9Q+%C80S-9wvEq9Za>hW{ZmRY3M>D+~kmw&+ zdJ9*jf!=1L5YkKg4_}2TNEH_z9~o)y#I5nz*SK+Pd}74LAW_&Km!7CR?WaPD+BpY+ zDNwcV(gn!?_0w%~V)4?i{d9Lr|8ovdPDrq35W9SF6m-xA21Z9G1f%>yD^p2TJw0d;0swMicxyM6!ye~DJDoM zDNhWGq{tz^Up;&d|FEz+Q2Vj2rBnoXyvJY)oc@FFcmySwQ+it6eX$6J~*#madrzft6IvA-6Ks<+%Y z2MW7zG6b@qF4?{?N1srp=KF)esWYjDhJodjDW*CqdFgYzvW6!Dy@!k=j){gJ8-GG>ADN*0I(&5hopNOpKWqBGg(eQpDL= zogg?iVXKG`9oY-e#On*czu)tmp3{Phmv?5L=g@Q6)1F?=^Etoga?U!#lr!7gt0HHB zO|h}!D-O~scf=lv@D)@1OCHiZp~<41Bq8A|xo8{}OtBN`14{n^>n>aFC2TB;Qd3+@ zXX>|oBk$d@^aP3G@l(P9&P!WAYy6HXgTLXBSecrd!fk8*5V^9tDRvdbLAjy9!KV1> z=mG~MUN>4a*J*KKeB+O<{rz6=!MDE?{1J7KDXRXs^a)HssyH<;GU7QTuKI9cOgg@x zU8qini|F;!)oODkTPKAnYNRQ476AVPw{>JtR_wwQ7t+PC_I8?TD;!c#@E`3%%YZb+ z4aP;sbjWW=|IkOD<>jUC_!ojz)>mpHs_9=Zzjpj^MI zd+)h=ZuZP>oulk-N2o^iEK!gM+WH!xTR6`s=aSneWE;UOLp^ zYpdvbN8T6fD%I<2Yx7opHQp^vaYP*%sTma^h2iUHYI3>E67oknP2u?%Ax%*sOpzXA zgelBm$R|vZkr8zTi9*KI2WHG2LF(ZQH6bTV5#rtyfX;_RdV6wma@r08D;twT{z`vy z@ch}c+-|+bE*Yz!;C*>b)II_p;O4f_I^7g08PW?;RQjJiiMLCndl{I*E=|GFPtRj1 zWZlv0nKF0G(mRcA;+?YndeSX_MIXPWi$2o^+cN}F(5L7yr|30(tY6NTPNb4>gvgg`4umq)Pyiv_I|WkyrTmWsv~M@GEw3R8T@ZIzC}t(Pn7 z9RjbfrV*xiSgh51e<_$^&(;!~!h8Is%TwoQ!;5Ce-^Zvc|F2{U$DRzXD?Rg?ZeodN!$%n&_VIo3bPzzQ6yKs-kv-g1hZ$WXf~~4|4wO&8es}; z6a$MwHWL(^!dC-AKs6FnCH$GPtk#V*=p*+87Q=_lW-*W=Vy(hF+tGo&8%%-7$5Rwf zJPT;fqKKY17vYM>UFItom4Hbu>_Dq^P}1N_!kNO@YqLv(R3QFn858M%CcqA$8IXz) zkDUHK?1^EMi9GSDG==2GcOES#Q*hm5@7`&yDAccSU2q6f(2&hW+*#tF)`98$3T=SZ+DLT@QN; z5e$#j!0J#psRHk6^~I4FE2!>KZ3WU5`I?%%)m1{C1NsRwY}*u|lkX~hpDEFF;F3qP zi%sDis$T14df60-PQj)*60}QG09U9@dIHbMxy-4IIK9Wz40n+RXW9Y%*eB0|IPJ>5 z{Ov=z7y>H%85kT~L}nZmdAZ*hSAF`z;fQ(Ok0@bc#t)|j@~Ry~HB)$Ciu1jKL^Fb) zIjtrIQ;<{06!=Vf_i$;00*lfP68sggQiGJy*|~wIrjSvZqLNHO!O#%pbiovtY4-rh z3&oS;{qD-J@xtcY>M~~zlO41cV6ND55KS*kIH|Qe3;(tZqHVTW$ zG+Z!+yI_i|uYau^MKLQ)u}7HV*R8cd4R?RTzJ~su*Cp$xkM5l-m_h^>!XgKa_p3Tc z8)T~{!V;>ZoEh)_q2A&D6{cu=_?21Qx8~>T8k&7=`}Q}Afmnpsi*8gNn)RVD#WQm? zBQI8>?oqAWtKgdv=A8BUX01j@8#yk3(WC0G5Q z)vDilB}l!Sp$=j3MFT%rt-(U;o+vtFy_@YiZ}>T+2%nrETHb}R9DC(#TJ~{r0qjeM zBi0n!LjCh8KZz!y(*C1)VG0kK;wLTSFUMQWjtPd$9a+w~>5}#<8JAunia>J1?2>%O z#Xq@n@_rXgL2bFY`ATF|bGfM92~+S{YZIbEl*XEPmM9m{A_9t7B0T9Tf`1hK3`mo{ zhO{gH>-?8}PAe3FN%ur+dn*vvg;y7V76gT0!GNOtWtqQMx!0zx5jKG3!bY1R0s2>X z!e*hEf<;jhQ$Q8XBO`ary}+W_yDB95AX7NW6hc3}2F|&Z&)iPKKpC5RnXv452R$J${Ea$3)G`ZzNAJ~>KiieyDj`b^xHsrQeTb52xJ z2)<8QG|{=C9dk`WDX2?K)LK)<7o{M@?(_`tiEF#F_i|ul$D39Iiuh3!>lI3H6;ctk z?FL#Y=@pM^0gr_cLQte4rf_H+Xh25o_M44}2@Y^X;n47Y zxxl7y{1)}v8}@(j8~%CzlE>TFwa;5~{3*lmu5~Z>tUP<2FvU4LOp&Tp3e@JKKHnWk zh;TY8ZZ$TI&`57Om|@S~d78PYNoYu6~+^Ojy|y96cyH*g`7!4?MDSixfp! z8AJhKih$c-3MWi)>V?PI6jj`y=>BG+Ueb@-XE(MPFYO4P?iK?%VTz@mL5-MX6sjn1 z^Vac(!2;{YU;1uKm?CyyUso5IqAPVN+D{jIxR1YdoGLcN^DjM*A)qit#gu5NIOQA| zsLESx1#)-zWV$0~)4w*QBS^=;dV!aPDQu9)_OhP}fEIx$(i9(#?aHvog6S@<%BsCfYDv?o{=*38ua!OOIgrY$0Y+-~cT8h}P3Y5HCucS07 zDczHR8)DfMwb9b*OmXaCr;Mti2Nc?mBEky%{eAwI`KersRs^axD{`CMB52hE3LTaN zG=WqrpzJnGOsO0!n2c){p2-DSosb^jq)$2`KLbygPLv^}IKid>x+$*p3=FuBJj15= zl&|RUdZtDX;LL$YfZ87V15~|mNXQgXQAe2?U%)6V1|?jE1!rKE8n@$hZLnp5g-^z% zDJb;#{I`bv2WKxGx{Dh!))$UPF^7(t*PnmBhX#E+9A}TRDUL)32JG_|ij3rUrJugE zuT7yT@1~=A?t2AvG_xrzB$3_#9shAG6Ko25VCYoKu8=7Z3-oj-goVdGNmJx()>AZ8 zvM7&OUl9)e7cEV!&KtgMO z58EShZjlR^>&S?L>mI@sc7rLdaSseQ-xbXir|LQIS5F^207N5Y!vRMTu}`|)(iBG* zo;uF?4m7B+f;7dxwmSELn6|EqVynA*iA*uOpG+~;*zbs+{*}Uxo}Q_#OY6`BaAbbD zbjHD)7p8butr_s7j33rw;xkyzWGV6@w>;{5NEs2_$QIP%>Y zF5ry~nKN4LqaU(y_8$^e5B+kG^Hbfz6z4x9Q@k@(Rqq%*ji7}1Zv4pc8ZX8t`Mk|% zyBGK}v@ic)Q=psFGvJx96hqDIx;ogYrVJhb%^O%Wm;(PgxyVs^-p0TbbgCSBGhVSn z6!yU6@Nkrx7kVNhRtb0NT(H?reA^cd&~B*DBFj%d*2-k0DMVo2*Bih^AAl|* zEKEO&?FxS%i;Y7}ji=cY98efM@g!97*G4dv$^jD>dzz3Q!GwoG2HGYbAK?Yev<)V$ zjpFv(;R$I9r@<6A1qM8;Yzl2Sh2zZW=gA5(B6!Jg$p^M9Y<-HzLztrbx(bp;IsR*( z21$RQ?e4n922@%cMbu};*%bZ1=MblKz4J||{^8HR`qjgik7j>b9rVyE)gh?(P$=p7 z@5aU8t7-RuCu8G}0>tOKSW|PcG_DHJMWL}HtlSQN1z6>0oJep{nV0#70#s6l%8r#> zzFEcXo|fTg4d{u8eGP^RM2Ad~i71}SkxRNI%N-2Qu1&Ur!wGf`$l@FxJABsd5m$!Q zv;l6=j2%9Fk;9LPpkaK%!@;E!+!i|h6BX*7!@?AyZS1|48x+*XQl;0#QqG)ZILkRt z()*kUkb3+@5k)2Uy4r!0oRt+{Uta4-2_~t>#mbse-~ZSSk{jRB-rJ_Bt1KMO>O(UG zT2qX?N;cHlqF4;@k8*{7!oBUfCP);l3aJSw0uy7i=uTh(5VWibLFYdCM>C|IJfdYY zJ_(Z^P~3X^Et)Bu#+c#;oU-R23Nl4jbZY#1`g!X3I0LwH5DL|KobpC_Uw*embrkL) zIodr<_ob=aXCOf4fHC&Di|{%!=w3aC`poa=_oI_!-#4)XUGMz-gS_Dd{n0>*I-hJi zg-ps|*hpT_U}QK!E$7Nz>j*U3OMyq5QX*qkJJ zH;7e>BVxkXNJsB*JlD^Ya)>R7s^SBRowtmTNwf)hdOMm8B%$rQ`Iv6b+-O&Z?S zM=wi%V{8f>2b3m6pJ%f)ML2w76mK>9A@$BmQ`DjS(?{YaTD3h#Rf?b<_GhaQC7d@6 zXA3zkZ$4PW99?JbFWz>>Q>jtHJKG!^7k$n1W-}ANu-| zv0!m^rq9T*(6)t>{86y56FrZ`xQyBVKmVWXol8t(RT#%(bYr54dtJGqDP5SFn8C0h z6BeaJ5=#X(Z3L2%+O!jeXcK}2F*hU#v?kiBg#yMfi#iFh5ITfcr1FqZkd8B=FhfyN znapAw5*>Bn|NG9lkCu*(&yDp3`nv5ZTL=*oHZsZ9zg;x4-I`l?T`+M*C4uvT$*<{D7 z4zXL<6i7wV6qA09EUwvV>n~5JrXb8g@`Sud`&@bAD*ks6Es?u{Dgrr*bfUcc1(;&C zuWK$uH62&yy1I{^BU9k}UeFtqrrRCF3DXNyp6t+OZT8DMADe94@ zFjKO>zBLmHsG{(ASQO`{C&8Q_uEgV=>*b|+O1~Al<1D_I7f2O2FEpSDHU(*-9hMN) zj@oJ7#OFUl3vhy2%?)5qK1!PSRvJA{|KAofdm?6usd);g!4wa|6t=i*`moDl1-eu< zQ_^=EadgNc$AU0L^_B4>wRuCY%D6ai0W@4R)NTMo?T{&8pY8d^3(hwCFFy~VcJo^r zye25Rd!gP`^!5@Zp8C*yk8J$#y=U7t>&SPCWx+E9#+9IJoJM7h9~b9+4rVLsq&)Sp z5X~qg0#jIoDbiZsq;Rz`g~FrGjFl7C8kl1Eo4(09>VlC-`?s>)et-916;rw8^5-e+ zd3?Zg-A8PSy`#CV&Q6%34j4OVh7m;^pe}K+Z?0>#lGy0%y#6M3RS~B6o=j0M)4!E- zKQKjAfhoGP*wZ>T1xM0hMbDicJwkS*k^}yRXT_P8h7>2cb#`s_%{R|4ZHPfGj>#0^ zn;RW85cz@`=X<~>2LGde95d6qyE9d^N@^eV&CH?82C8bG`5b}wM!LNq<}6+dmZvTX z9zeJPS&DWBr4HG5Qsg}lZvYF@7fmvq>$9aD(Nro3i^j+nEk_}<6l@BoW{StW?>TL< zkyKmWLyc=`=`hbWP}p!_l-i>p0>CW?CHDUQq24@F+(*4fz{T05^^7FD?p zMAkXmI_kkQ`-mh{EG?hgVpbK5S**9DIKqdA^p=L6HQx`0v-~XnRP0loaD_n=xMQB> zzEYH|y613eR^w6_qXH$e=ik*pOofnbu@I)YrI+Rk}ML2gfQ=qi* zV&ml-D4A?*V)UB3b~1&#j<)r#F)JcX@y4RPwtA|`s>8>x!-vU*`KqgI3ccoytKK$J z4*FsbTR9S@K;)>2O;Hs3bwZe;Mw-Gxd5Rgo>l-$O6{>LUhAH_H^#9uyj(fJVv;TQ% zicT`Z4_)76>yaJl!bmr}9WcdUUye=&{2lU88b`AuswpmW1LY!j4V@LHsNwW);cs=$ zQy@~`SBjj8niH!slGxBjuET>&)jptg6U7lR39u(xXDNG;+E$NV%LH`{Mk%}Y*~0f* zt4p{zMA*mc)h-Kxd=!NuxANvQ{vJ3dTRR1i1mD05Pz0fif@6)Ctu2_W_@n6$XffQi z;Lcq5qW)+>*~4TqmBqm0FonaAr+C=+o{t(yUjn0AX5m8Pg=XKt7pw@$7i@|UT_C2J zqUV7N5vV~xqVQ6g#Ytmty9=>)}6#T_0`ZC$P`s2OurYt86g8SDs75oSj40Gua?xTQ`%3YO5xL)##rMl*2A{BQ3e5j7*A=8D%s%8EvNa&v zeZ;52^DsqsZoj{?bA&g)(Jo9ec!&0sO~Kojra*-93QSR~zhHNsO;ICFVcpLenW0Eu zUoO|DkxS@j=Qf*SEagw9({~CBDPVXmPexHtgsbGhi6!OW&ffPv+W5@0Q;Q7tMGFDH z8bIaFd27LZN&dg_e3J6Si2vY4b0<@jn~24n0O>f zz?X_#|9lBDBT;w)le>XRX3ET)ZwJB@m^nVaiPTETX*!qN<`s4d?eC??-jC_D>tE|K(9MVM z>oz`j^aBn_!lqbCWb$Ay%nWni4Ac;1r@LLW@k9WoSeiOH867=2Ik&1*d$~B1bxqQa zk|&0<>4f!+`^4O$&sqz4ibbK)+TJRmhEGOSjYUq3zCMdZJc&Df2B`6Rp!!fcUV6e* z0Z}{|%RHS~ZZnwTA#ZhU!`j;{iXMf#Q#5>edmqY*s~@o$is%Ub{W;6HKAFx#@#`SVa9N z3{v6XOT=X3hs`$8Z@CwIyklOj_KW8IOqaJB47zw>J=WJ&15Qlzroa>k9ks;qO4?sY zw7edo0NI2vMTZmxz(7sB&FwKPR-D1PWG-XEFLVO{2{Jgij2nkdC~MS{2dxS5R6tyJO477S2e{Y41!yAZ24WTd+F-QtC_rz zLpNU)CQT8y9*Ncm6S;E~P9amI{HKVUZX)wR?8Zny(iCzqDa9sC5m?R9dR<+L$W#b_ z<1=Pce1=cEt&WimA3Dpeg{C;qrl5`#jy0tY435h9T#P<8cAC=pX_pa^Q;6LRipa?f zB99SSvJW@V_Tj)}k!(}sQiA8Be#S+CS)NVtu_w-jP~pMrgoc!ZlVu*^C$)}R8&Q~h zW-yO9ft9D<2N7rSr6Y^-6YPnm)+W8&0WAMMCIX@mwG^)vn&MGUwa+7)KGwaIW_^vn zCKm^I%x%5rl;{@K;6M+}o=b{uin#dg9|IRfhwx!uC}_zbv3Trc3J*GF1g^jo4OdWr zv2%k2%CORM1-$o)mm_LOme@Tf6ASl#b@pP=&{%T$TG} zW>eG(Q>a5zpeX?>)HrArX9L~!tEM=nf$D<$wTN$bQMR zL=JM~O+*q^#qFa&lhr|mMY30g$bc|KJ|&=x!VJx!BgAs_4$ z%*CxyzpHOpWK#~zmNWhdnxrUj6R;&HPXSG|oc4rC-WxITRQzmlTYi~d!GIB7i&(KbG%4F`9Z zDOF?pDGTk5jYha#HMJiXgL3T&31Ijef117uKJ^$)Q7TITW-9nxz}+^rki41TdHFUx zL0P|<1m@%^lo(mQ^XYy(g-TBsn5O35!7f+SVuB<6)B$C!Jb}2P3E%<9d7AWR{;%=C z7=H?j{0fmYwZamhrKv?A67#=K1$zQT4~XLF;ylG8UR%TR+oD2~$K+js&UsSk4)6;l2xzHGCWO&p}JVxm94Ovg2gO1@K61g+J=4cpteP~mQ6IG@gFa@h((R1E=8K(Fh@-8B(nj*uCm(+JR zCXzbOM@6Lk_|!YOn0GP$y!-@R22!qEj#rb)a5PkrCTnP)_SeJ@_@w>!V6B}TAx??0 zlz2+cjHO&)J?auPkHjEq|N=tT3qz65lWVr2 z$kfUV3KtIh73zAmk-Q{_+6!+c$H$X`??qk5@`^OY0!;B?g#nX*=HyabBrqH;FJ}r* z<(N3lGX_(bO0w=^*41TBKT$y@&MS%MO_EFsi&&C0rTySzNZ_8PXq6aEk)Ve(>_U4b zw(rN@>83DMw053m)~_DoeVal%Bkso(G1dVTu^!E5VwQ|p%*z8$Gx3<|j6Y8W-|?i; zWXwGArEMv2esEMAWIm=2OLve}8|ZCpbs(^wXTDIB2VDYg0{uzIOv^)5keG z4VW<0yJ9efp-aWBmD@>N^8r;*Pt5OL-AvwTjDP_eZ5-y036|5vrB=AAE-is!HJ4Sm-Jm99uUtK?D#a>%FOVF#cJF)Xr5SgrSk{{EcBmqHpFk31`QxiCM`qF_<>Jq)UJ*cFD7LgE9i~iqt&NQQq_QJ~WcXXV_&+%Myetzei@hE4* z+OcEynL4I^+;jCK=A$r-(YGrNW6oWuhq_GHd_J>{d9;L^H$0(^X^K)oi_Uq|W(tr0 zpF^ep>F%uJt8>_Ne@D>cg+X_7Ay-uYfd2>8dQ+$ZeWtEUP566;$Gl|}5O8l{;$(`& zrYXi5bEB8mN>f})z!XcCf5a&h2^E*2ZCrbEoAE%5u%erSY22B=P;h+2 zG{yEKh8Diy`33yFigrfl#L<4?BG zmL~$HD7M6(t+q@t!H611q$%p_BRgrx;{{9+qY|TQv0f~aCyKZsQ{aF{uf^MUG=h2l zg=nQb{Vp#!@=S>yd$qydc#*||O~KsE^7G*t?(oT)$M2v6Rf=MJC825MkfL}Ly7FHp zFXlRLS|A}~KJZ+u`0jr;}=ePj|JtT2pH$~XcjM`q2RGi-|c$Fu77qELE?8(;wfV2jU8DaaI?fE*+>!dfH)Q;;go zi?PtR@61p4wJ12Qg(*r{h~rl1L71Ult34npmEqyxBj13Hl}d#pYBiB$urbVC6s2G4 z?1Y$L8`?8GCc6zAg(*q}m|_?HB9!lrb8=BRwHSVOm0Q_Y4Ta9l()biaBX` z-@JTjea&hGE z#QQ_eC)jdfth<0c4CqSdJ?kqR@LQGZkJo1q-zAtDuOY@SMFDzPpMZ&v+8w4S;?v?X zrw9g@3R6r>XvXCYds!7GYfDAg0m%dWP$+~G1X6-IOlJj1Gz+<%Iy`X|B+;#{00e9$o=yK^ymp!X1?5JYdAFs-QAAIxZ_WlVop9u629~EYc zmqjsoGK*qr{Ny!=A}9w*6I$ZPi4DYFD5CaYxS1iC65JusRxhRv!uH6JD>E zJP{{m-8!;o>(Wh|_65yB(r{w<#P$qwh-a5~8d`MCqEsrM&!1)TfJDL5z}an3zyv4d z@{Q(uFbeLQRIAmYq4Y)OzMat{6x&1>M>%(?(4rCSn^lo-ecomBqna`2@G}S_vwcG* zymL-j@%0D4d7f9m*Ad-mWHsO$@c-ZmNlyT7E8vLlHSmNNuqQ+p#jV*v$|v@jrWhN+ zhy0#B`TV3wlg(@yO_b*;_N$xTqJ`A;TQDEQTvXgYV z9+O8#uaAyizkZ{f%jKXB&NZS7SX5R`0P2>{@7aUACg<_>2_6fD3*X`*H+2Dbx_uo9 z=njN@1O6WZ{d^1Via++BIg33+i~^EW;VpO3~&m62h=mEj6cb(Ay{Yl=dMjMXbtAo#EJk zw-VU8t+};8I4*>jPzEv#J+vO)j$k=B%~5DeE+PT>wbglZQi5mx=Hn>Dy6szQ&0`n5 z0YroS2q~~iV0Q8B*6qXg;L#0?4{jh5=PCRqi>Hqs(=UCye5KL2(s|sbKY?x*Cvm@L z4RZ^t)jf8si;=@y>)OkS&Lac`ZqiyjfBgEtD{e9Qou|PykA(farcfo>0B9WT6t=`^q_RVRU3f77v_tAx2_RR*^ zlQb32+g>SHC|a%VnPXN9y8FnBV|DyYpcBuX=dUhaY>5mWpK)CmxqvBAWa9Gf!ah8X zdQTGn6%}e3QNc0<-Vhvu!zuE98F8p3-eYHgEweNua`Ax&F6ie(rjh~i50HR%Le}j% zv29*T2%ELIKNVk#M?+3~m6$pOkq9+qPTjoTe)RS&?p^41Ez4<~Mk?BeOtai+5Oxiz z=+IHc39~>#(W9X_gAoNe*EEfU;%39KEUOE>p7W^Pw#2B6>tYatScG#yq6O}$iumvN z;;y5gQW1wELsNQUDZ zqdI7{ER+JNpsheEOw$Nb!6qOmMX^bz9{z};cc+9y4f?g!=%H2vs=N z7Pb~xDr(-SVuDRQ&UC#{?A*EY+^Jpb+L2P=nm!mtFB@N9Nrg^NAkiHO3xl2TMaT{( zVsIK=u*SE!|0C(obVBwa6X4b%KS%gI^L7{?tjM4OrI@_x-X_oEq^WprmuV`TckjrE z;-nRX;-J1}b=wJrqSwNh!YKFT7|TlJCZ}7S?npR+PA_M1uG2T;k3pBn$}WN=4<~*_ zMdo7UQzhiFQxqlVnINHoHRCGBWi*D7LtY zUR)EDf?R_$xNofcS}7D+0i5};8(jRSj;D#h8lgweqiz6+bKO}zvMgGVB zfB5mkkC(H=nEyQrWX_|_oq~JOpGe}^a)qt z5rv}Yh2q1|10VfCySjSK_N%9qI3ux;30-DqUpv>?N@YWDQik&)q(|!`D_nfY9%XD; zA_9_KhlRp#OU+g{7blJOqdpr{pcI?;=}6J#y^&Nnc%oG}6fVhCp%9d!|G_lYOm1zy z&~tGoWA!$mu#5hg5^QC90Ncpy&~K3SVEMGkaWOLXn^TI)<;*lBg%L>3B)?;<{LuDG zQC3MQa^VTc;NfGZ7amb;IhX@oRsB-*J7%p=EbP1G=HgEOJwJQR@el9+61Y`_ zqM8s!VqQU23!7`#?S8jQOQF7;fS1L+p;Xw-3qdHfYZH`T3XCUeDz2nw7_q(VH8W{0PX6%iS;sm@7>!guonDWxbZx(iR$OUnn*YH}lGm=X8$`eB zKjCU;X}$lC(6kAsk4|V%_+L6PUS3;x9pdZH-?sUbFe3RhY*I@lO>18N5GqA|`{v@B zGEIf^DHQu@C|D^T`kmO6=0^Vc#EZd=KwcP?4S8zEUebzv_{!gw_iZnfja?m53X6sU zaI_C)!O{Cmn>XY+j{7@p5JoOJy`+IE1ZLL^)39kNdiyl3G%YCvG-_s2;5hETlANKH zG&Lc7l9*jKP19~TEEFjrkkD}O4BiQj`wt~&mb64T2MZ67R5;HtE!mF|MMz?QX+}!m zIPSlcoRJVBsW8n$<^}RV=)Pzd5`5mlaa@p!cs#6 literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@2x.png b/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@2x.png deleted file mode 100644 index 07bf4002d615038578c578a19d2cc3f41e9d35b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18108 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 b#XJ81W%&TF^)SZ600000NkvXXu0mjf4_(#E diff --git a/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@3x.png b/YuMi/Assets.xcassets/middle/gift_constellationBanner_bg.imageset/gift_constellationBanner_bg@3x.png deleted file mode 100644 index 392f0d4b604eccf17d85af591085622fa9395f67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/Contents.json b/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/Contents.json index 17e37a5b..bcd123e8 100644 --- a/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/Contents.json +++ b/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/Contents.json @@ -5,12 +5,11 @@ "scale" : "1x" }, { - "filename" : "common_empty_avatar@2x.png", + "filename" : "common_avatar@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "common_empty_avatar@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_avatar@2x.png b/YuMi/Assets.xcassets/utils/common_empty_avatar.imageset/common_avatar@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..835da9ad59f1d3c1e8d3697b68ad20c360d0c86e GIT binary patch literal 10079 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 QyZ`_I07*qoM6N<$g2!-ck^lez diff --git a/YuMi/CustomUI/DJDKMIMOMColor.m b/YuMi/CustomUI/DJDKMIMOMColor.m index 45658fc9..324e19c9 100644 --- a/YuMi/CustomUI/DJDKMIMOMColor.m +++ b/YuMi/CustomUI/DJDKMIMOMColor.m @@ -95,7 +95,7 @@ } /// 按钮不可点击文字颜色 0xF9F9F9 + (UIColor *)disableButtonTextColor { - return UIColorFromRGB(0x5FCCE4); + return UIColorFromRGB(0xB3B3C3); } /* ------Button 相关颜色 END------ */ diff --git a/YuMi/Global/YUMIHtmlUrl.h b/YuMi/Global/YUMIHtmlUrl.h index 5d462e00..16874981 100644 --- a/YuMi/Global/YUMIHtmlUrl.h +++ b/YuMi/Global/YUMIHtmlUrl.h @@ -90,6 +90,8 @@ typedef NS_ENUM(NSUInteger, URLType) { kXinZuoStarURL, ///收益记录 kMineEarningsRecord, + ///金币收益记录 + kGoldEarningsRecord }; NSString * const URLWithType(URLType type); diff --git a/YuMi/Global/YUMIHtmlUrl.m b/YuMi/Global/YUMIHtmlUrl.m index 5b3d5882..5b4be760 100644 --- a/YuMi/Global/YUMIHtmlUrl.m +++ b/YuMi/Global/YUMIHtmlUrl.m @@ -18,11 +18,18 @@ NSString * const URLWithType(URLType type) { prefix = [NSString stringWithFormat:@"%@o",prefix]; if(type == kNobleRankURL){ - NSDictionary *dic = @{@(kNobleRankURL):@"modules/noble/index.html"};///排行榜} + NSDictionary *dic = @{@(kNobleRankURL):@"modules/noble/index.html"};///排行榜 NSString * url = [dic objectForKey:@(type)]; return [NSString stringWithFormat:@"%@/%@",prefix, url]; + }else if(type == kGoldEarningsRecord){ + NSDictionary *dic = @{@(kGoldEarningsRecord):@"modules/myincome/index.html#/GoldLog"};///金币收益记录; + NSString * url = [dic objectForKey:@(type)]; + return [NSString stringWithFormat:@"%@/%@",prefix, url]; + } + + NSDictionary * dic = @{ @(kPrivacyURL) : @"sPa8x4YF1hFEeCeH5v+RMOulemxgjjZLbxkN8ZrBSM8=",//隐私政策 modules/rule/privacy-wap.html @@ -70,6 +77,8 @@ NSString * const URLWithType(URLType type) { @(kRedPacketRuleURL) : @"nRMNKGz9zmwOEcoRr/bGneWzsrl+qHbvUGgXJhFAfVGcldkazbiNrc/v2rR0HFw+",///红包规则 modules/rule/red-packet-rule.html @(kXinZuoStarURL) : @"3l3NxeDKO2bNAESpzjZ76mvJa2D26Bgqy+nNusiuH1UHYM+bYk+MM/TNM4VRqk1K",///星座礼物 activity/act-constellation/index.html @(kMineEarningsRecord) : @"0HJ5o+40NtYGeHo1KRoQE3VdLhFQnvGyqgph9CCLjyU53rS29T2nD7UEh3CpX2BG",///收益记录 + + }; NSString * url = [dic objectForKey:@(type)]; NSString * webUrl = [AESUtils aesDecrypt:url]; diff --git a/YuMi/Modules/YMLogin/Api/Api+Login.h b/YuMi/Modules/YMLogin/Api/Api+Login.h index 09a0ef85..a6d768ca 100644 --- a/YuMi/Modules/YMLogin/Api/Api+Login.h +++ b/YuMi/Modules/YMLogin/Api/Api+Login.h @@ -46,7 +46,7 @@ NS_ASSUME_NONNULL_BEGIN + (void)resetPasswordWithPhone:(HttpRequestHelperCompletion)complction phone:(NSString *)phone newPwd:(NSString *)newPwd - smsCode:(NSString *)smsCode; + smsCode:(NSString *)smsCode phoneAreaCode:(NSString *)phoneAreaCode; /// 第三方登录 /// @param complction 完成 @@ -72,7 +72,7 @@ NS_ASSUME_NONNULL_BEGIN + (void)bindMoblieCode:(HttpRequestHelperCompletion)complection phone:(NSString *)phone code:(NSString *)code - ticket:(NSString *)ticket; + ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode; +(void)getPhoneAreaCodeList:(HttpRequestHelperCompletion)complection; @end diff --git a/YuMi/Modules/YMLogin/Api/Api+Login.m b/YuMi/Modules/YMLogin/Api/Api+Login.m index 0a45436e..b689f2b1 100644 --- a/YuMi/Modules/YMLogin/Api/Api+Login.m +++ b/YuMi/Modules/YMLogin/Api/Api+Login.m @@ -37,9 +37,9 @@ /// @param phone 手机号 /// @param newPwd 新的密码 /// @param smsCode 验证码 -+ (void)resetPasswordWithPhone:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode { ++ (void)resetPasswordWithPhone:(HttpRequestHelperCompletion)completion phone:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode phoneAreaCode:(NSString *)phoneAreaCode{ NSString * fang = [NSString stringFromBase64String:@"YWNjL3B3ZC9yZXNldA=="];/// acc/pwd/reset - [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, phone, newPwd, smsCode, nil]; + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, phone, newPwd, smsCode,phoneAreaCode, nil]; } @@ -69,9 +69,9 @@ + (void)bindMoblieCode:(HttpRequestHelperCompletion)complection phone:(NSString *)phone code:(NSString *)code - ticket:(NSString *)ticket { + ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode{ NSString * fang = [NSString stringFromBase64String:@"d2l0aERyYXcvcGhvbmU="];///withDraw/phone - [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, phone, code, ticket, nil]; + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, phone, code, ticket,phoneAreaCode, nil]; } +(void)getPhoneAreaCodeList:(HttpRequestHelperCompletion)complection{ diff --git a/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.h b/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.h index 2ca2dc09..69f05256 100644 --- a/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.h +++ b/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.h @@ -19,7 +19,7 @@ NS_ASSUME_NONNULL_BEGIN /// @param phone 手机号 /// @param newPwd 新的密码 /// @param smsCode 验证码 -- (void)resetPassword:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode; +- (void)resetPassword:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode phoneAreaCode:(NSString *)phoneAreaCode; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.m b/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.m index 20c269bb..ef8f8212 100644 --- a/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.m +++ b/YuMi/Modules/YMLogin/Presenter/LoginForgetPasswordPresent.m @@ -38,12 +38,12 @@ /// @param phone 手机号 /// @param newPwd 新的密码 /// @param smsCode 验证码 -- (void)resetPassword:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode { +- (void)resetPassword:(NSString *)phone newPwd:(NSString *)newPwd smsCode:(NSString *)smsCode phoneAreaCode:(NSString *)phoneAreaCode{ NSString * desPassword = [DESEncrypt encryptUseDES:newPwd key:KeyWithType(KeyType_PasswordEncode)]; NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; [Api resetPasswordWithPhone:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] resetPasswrodSuccess]; - } showLoading:YES] phone:desPhone newPwd:desPassword smsCode:smsCode]; + } showLoading:YES] phone:desPhone newPwd:desPassword smsCode:smsCode phoneAreaCode:phoneAreaCode]; } @end diff --git a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h index 867d2167..ec483fed 100644 --- a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h +++ b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h @@ -23,7 +23,7 @@ NS_ASSUME_NONNULL_BEGIN /// 绑定手机号 /// @param phone 手机号 /// @param code 验证码 -- (void)bindWithPhone:(NSString *)phone code:(NSString *)code; +- (void)bindWithPhone:(NSString *)phone code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode; @end diff --git a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m index 4178efef..114a969e 100644 --- a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m +++ b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m @@ -55,12 +55,12 @@ /// 绑定手机号 /// @param phone 手机号 /// @param code 验证码 -- (void)bindWithPhone:(NSString *)phone code:(NSString *)code { +- (void)bindWithPhone:(NSString *)phone code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode{ NSString * ticket = [[AccountInfoStorage instance] getTicket]; NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; [Api bindMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] bindPhoneSuccess]; - } showLoading:YES] phone:desPhone code:code ticket:ticket]; + } showLoading:YES] phone:desPhone code:code ticket:ticket phoneAreaCode:phoneAreaCode]; } @end diff --git a/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.h b/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.h index a3b9c680..92b0e999 100644 --- a/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.h +++ b/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.h @@ -19,12 +19,12 @@ NS_ASSUME_NONNULL_BEGIN /// 校验手机验证码接口 /// @param moblieNum 手机号码 /// @param code 验证码 -- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code; +- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode; /// 绑定手机验证码接口 /// @param moblieNum 手机号码 /// @param code 验证码 -- (void)bindkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code; +- (void)bindkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.m b/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.m index b537dec6..63d973a4 100644 --- a/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.m +++ b/YuMi/Modules/YMLogin/Presenter/XPLoginVerifBindPhonePresenter.m @@ -31,23 +31,23 @@ /// 校验手机验证码接口 /// @param moblieNum 手机号码 /// @param code 验证码 -- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code { +- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode{ NSString * uid = [[AccountInfoStorage instance] getUid]; NSString * ticket = [[AccountInfoStorage instance] getTicket]; NSString * desPhone = [DESEncrypt encryptUseDES:moblieNum key:KeyWithType(KeyType_PasswordEncode)]; [Api checkMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] checkMoblieCodeWithMoblieSuccess]; - }] mobile:desPhone code:code uid:uid ticket:ticket]; + }] mobile:desPhone code:code uid:uid ticket:ticket phoneAreaCode:phoneAreaCode]; } /// 绑定手机验证码接口 /// @param moblieNum 手机号码 /// @param code 验证码 -- (void)bindkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code { +- (void)bindkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode{ NSString * ticket = [[AccountInfoStorage instance] getTicket]; NSString * desPhone = [DESEncrypt encryptUseDES:moblieNum key:KeyWithType(KeyType_PasswordEncode)]; [Api bindMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] bindMoblieCodeWithMoblieSuccess]; - }] phone:desPhone code:code ticket:ticket]; + }] phone:desPhone code:code ticket:ticket phoneAreaCode:phoneAreaCode]; } @end diff --git a/YuMi/Modules/YMLogin/View/CustomView/LoginForgetEditView.h b/YuMi/Modules/YMLogin/View/CustomView/LoginForgetEditView.h new file mode 100644 index 00000000..304d3027 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/CustomView/LoginForgetEditView.h @@ -0,0 +1,36 @@ +// +// LoginForgetEditView.h +// xplan-ios +// +// Created by 冯硕 on 2021/9/10. +// + +#import +#import "XPTextField.h" +NS_ASSUME_NONNULL_BEGIN + +typedef enum : NSUInteger { + LoginForgetEditViewTypeNormal, // 普通类型 + LoginForgetEditViewTypeSms, // 短信验证码类型 + LoginForgetEditViewTypePassword, ///密码 +} LoginForgetEditViewType; + +@interface LoginForgetEditView : UIView +/** textField */ +@property (nonatomic, strong, readonly) XPTextField *textField; +/** rightButton */ +@property (nonatomic, strong, readonly) UIButton *rightButton; +/** 验证码 */ +@property (nonatomic, strong, readonly) UIButton *authCodeButton; +///选择区号 +@property (nonatomic,strong,readonly) UILabel *codeView; +///倒计时 +@property (nonatomic, strong, readonly) UILabel *cutdownLabel; +///类型 +@property (nonatomic, assign) LoginForgetEditViewType type; +///展位图 +@property (nonatomic,copy) NSString *placeholder; +@property (nonatomic,copy) NSString *areaCode; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/CustomView/LoginForgetEditView.m b/YuMi/Modules/YMLogin/View/CustomView/LoginForgetEditView.m new file mode 100644 index 00000000..7af35fc2 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/CustomView/LoginForgetEditView.m @@ -0,0 +1,206 @@ +// +// LoginForgetEditView.m +// xplan-ios +// +// Created by 冯硕 on 2021/9/10. +// + +#import "LoginForgetEditView.h" + +///第三方 +#import +///Tool + + +@interface LoginForgetEditView() + + +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///倒计时 +@property (nonatomic, strong) UILabel *cutdownLabel; +///选择区号 +@property (nonatomic,strong) UILabel *codeView; +/** textField */ +@property (nonatomic, strong) XPTextField *textField; +/** rightButton */ +@property (nonatomic, strong) UIButton *rightButton; +/** 验证码 */ +@property (nonatomic, strong) UIButton *authCodeButton; + +@end + +@implementation LoginForgetEditView + +#pragma mark - life cycle +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initConstrations]; + + } + return self; +} + +#pragma mark - private method +- (void)initView { + self.backgroundColor = UIColorFromRGB(0xF0F5F6); + self.layer.masksToBounds = YES; + self.layer.cornerRadius = kGetScaleWidth(24); + + [self addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.codeView]; + [self.stackView addArrangedSubview:self.textField]; + [self.stackView addArrangedSubview:self.rightButton]; + [self.stackView addArrangedSubview:self.cutdownLabel]; + [self.stackView addArrangedSubview:self.authCodeButton]; +} + +- (void)initConstrations { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(20)); + make.trailing.mas_equalTo(-kGetScaleWidth(20)); + make.top.bottom.equalTo(self); + }]; + + [self.codeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_lessThanOrEqualTo(kGetScaleWidth(70)); + }]; + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.equalTo(self.codeView.mas_trailing).mas_offset(10); + }]; + [self.authCodeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_lessThanOrEqualTo(kGetScaleWidth(120)); + }]; + [self.rightButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(24)); + }]; + [self.cutdownLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_lessThanOrEqualTo(kGetScaleWidth(120)); + }]; +} + +#pragma mark - getters and setters +- (void)setType:(LoginForgetEditViewType)type { + switch (type) { + case LoginForgetEditViewTypeNormal: + self.codeView.hidden = NO; + self.rightButton.hidden = YES; + self.authCodeButton.hidden = YES; + self.cutdownLabel.hidden = YES; + self.textField.isValidation = YES; + break; + case LoginForgetEditViewTypeSms: + self.authCodeButton.hidden = NO; + self.rightButton.hidden = YES; + self.cutdownLabel.hidden = YES; + self.codeView.hidden = YES; + self.textField.isValidation = YES; + break; + case LoginForgetEditViewTypePassword: + self.authCodeButton.hidden = YES; + self.cutdownLabel.hidden = YES; + self.codeView.hidden = YES; + self.rightButton.hidden = NO; + self.textField.isValidation = NO; + break; + default: + break; + } +} +-(NSMutableAttributedString *)getChooseCodeText:(NSString *)code{ + NSMutableAttributedString *codeAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@ ",code] attributes:@{NSFontAttributeName:kFontSemibold(15),NSForegroundColorAttributeName:[DJDKMIMOMColor inputTextColor]}]; + NSTextAttachment * attachment = [[NSTextAttachment alloc] init]; + UIImage *iconImage = [UIImage imageNamed:@"login_arrow"];; + attachment.bounds = CGRectMake(0, roundf(self.codeView.font.capHeight - iconImage.size.height)/2.f, iconImage.size.width, iconImage.size.height); + attachment.image = iconImage; + [codeAtt appendAttributedString:[NSMutableAttributedString attributedStringWithAttachment:attachment]]; + return codeAtt; + +} +-(void)setAreaCode:(NSString *)areaCode{ + _areaCode = areaCode; + _codeView.attributedText = [self getChooseCodeText:_areaCode]; +} +- (void)setPlaceholder:(NSString *)placeholder { + _placeholder = placeholder; + if (_placeholder) { + NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; + NSDictionary *dic = @{ + NSParagraphStyleAttributeName:style, + NSFontAttributeName:kFontRegular(15), + NSForegroundColorAttributeName:[DJDKMIMOMColor disableButtonTextColor]}; + if (placeholder == nil || placeholder.length == 0) { + placeholder = @""; + } + self.textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:dic]; + } +} + +#pragma mark -懒加载 + +- (UILabel *)codeView{ + if (!_codeView){ + _codeView = [UILabel new]; + _codeView.userInteractionEnabled = YES; + _codeView.attributedText = [self getChooseCodeText:@"+852"]; + + } + return _codeView; +} + +- (XPTextField *)textField { + if (!_textField) { + _textField = [[XPTextField alloc]initWithFrame:CGRectZero]; + _textField.font = kFontRegular(15); + _textField.textColor = [DJDKMIMOMColor inputTextColor]; + _textField.adjustsFontSizeToFitWidth = YES; + + } + return _textField; +} + +- (UIButton *)rightButton { + if (!_rightButton) { + _rightButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rightButton setImage:[UIImage imageNamed:@"login_forget_password_hidden"] forState:UIControlStateNormal]; + [_rightButton setImage:[UIImage imageNamed:@"login_forget_password_show"] forState:UIControlStateSelected]; + } + return _rightButton; +} +- (UILabel *)cutdownLabel { + if (!_cutdownLabel) { + _cutdownLabel = [[UILabel alloc] init]; + _cutdownLabel.textAlignment = NSTextAlignmentRight; + _cutdownLabel.font = kFontRegular(15); + _cutdownLabel.textColor = UIColorFromRGB(0x9168FA); + _cutdownLabel.hidden = NO; + } + return _cutdownLabel; +} + +- (UIButton *)authCodeButton { + if (!_authCodeButton) { + _authCodeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _authCodeButton.titleLabel.font = kFontRegular(15); + [_authCodeButton setTitle:YMLocalizedString(@"LoginForgetEditView0") forState:UIControlStateNormal]; + _authCodeButton.titleLabel.numberOfLines = 0; + _authCodeButton.titleLabel.adjustsFontSizeToFitWidth = YES; + [_authCodeButton setTitleColor:[DJDKMIMOMColor inputTextColor] forState:UIControlStateNormal]; + } + return _authCodeButton; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 10; + } + return _stackView; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/LoginForgetPasswordViewController.h b/YuMi/Modules/YMLogin/View/LoginForgetPasswordViewController.h new file mode 100644 index 00000000..32c56d9d --- /dev/null +++ b/YuMi/Modules/YMLogin/View/LoginForgetPasswordViewController.h @@ -0,0 +1,17 @@ +// +// LoginForgetPasswordViewController.h +// xplan-ios +// +// Created by 冯硕 on 2021/9/10. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface LoginForgetPasswordViewController : MvpViewController +@property (nonatomic,copy) NSString *phoneAreaCode; +@property (nonatomic,assign) BOOL isLogout; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/LoginForgetPasswordViewController.m b/YuMi/Modules/YMLogin/View/LoginForgetPasswordViewController.m new file mode 100644 index 00000000..f18f4a9c --- /dev/null +++ b/YuMi/Modules/YMLogin/View/LoginForgetPasswordViewController.m @@ -0,0 +1,237 @@ +// +// LoginForgetPasswordViewController.m +// xplan-ios +// +// Created by 冯硕 on 2021/9/10. +// + +#import "LoginForgetPasswordViewController.h" +///第三方 +#import +#import +///Tool +#import "CountDownHelper.h" + +#import "UIImage+Utils.h" +///Presenter +#import "LoginForgetPasswordPresent.h" +#import "LoginForgetPasswordProtocol.h" +///View +#import "LoginForgetEditView.h" +#import "XPLoginAraeViewController.h" + + +@interface LoginForgetPasswordViewController () +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///手机号 +@property (nonatomic,strong) LoginForgetEditView *phoneView; +///验证码 +@property (nonatomic,strong) LoginForgetEditView *codeView; +///密码 +@property (nonatomic,strong) LoginForgetEditView *passwordView; +///完成 +@property (nonatomic,strong) UIButton *finishButton; + +@end + +@implementation LoginForgetPasswordViewController + +- (void)dealloc { + [[CountDownHelper shareHelper] stopCountDown]; +} + +- (LoginForgetPasswordPresent *)createPresenter { + return [[LoginForgetPasswordPresent alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + self.phoneAreaCode = @"852"; + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:NO]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + [[CountDownHelper shareHelper] stopCountDown]; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.title = YMLocalizedString(@"LoginForgetPasswordViewController0"); + self.view.backgroundColor = [UIColor whiteColor]; + [CountDownHelper shareHelper].delegate = self; + [self.view addSubview:self.stackView]; + [self.view addSubview:self.finishButton]; + + [self.stackView addArrangedSubview:self.phoneView]; + [self.stackView addArrangedSubview:self.codeView]; + [self.stackView addArrangedSubview:self.passwordView]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.view).mas_offset(kGetScaleWidth(30)); + make.leading.trailing.equalTo(self.view).inset(kGetScaleWidth(15)); + }]; + + [self.finishButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.mas_equalTo(self.view).inset(kGetScaleWidth(15)); + make.height.mas_equalTo(45); + make.top.mas_equalTo(self.stackView.mas_bottom).offset(kGetScaleWidth(51)); + }]; + + [self.phoneView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(48)); + }]; + + [self.codeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(self.phoneView); + }]; + + [self.passwordView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(self.phoneView); + }]; +} + +- (void)initEvents { + @weakify(self); + RAC(self.finishButton, enabled) = [RACSignal combineLatest:@[self.phoneView.textField.rac_textSignal, self.codeView.textField.rac_textSignal, self.passwordView.textField.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString *code, NSString *password){ + return @(phone.length > 0 && code.length > 0 && password.length >= 6 && password.length <= 16); + }]; +} +#pragma mark - XPChooseAreaCodeVCDelegate +-(void)chooseAreaCodeSuccess:(NSString *)code{ + self.phoneAreaCode = code; + self.phoneView.areaCode = [NSString stringWithFormat:@"+%@",code]; +} +#pragma mark - LoginForgetPasswordProtocol +///请求手机号的验证码成功 +- (void)phoneSmsCodeSuccess { + [self hideHUD]; + self.codeView.authCodeButton.enabled= NO; + [self showSuccessToast:YMLocalizedString(@"LoginForgetPasswordViewController1")]; + [[CountDownHelper shareHelper] openCountdownWithTime:60]; +} +///重置密码成功 +- (void)resetPasswrodSuccess { + [[CountDownHelper shareHelper] stopCountDown]; + [self showSuccessToast:YMLocalizedString(@"LoginForgetPasswordViewController2")]; + if(self.isLogout == YES){ + dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)); + dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ + [self.presenter logout]; + }); + + }else{ + [self.navigationController popViewControllerAnimated:YES]; + } + +} + #pragma mark - CountDownHelperDelegate +///倒计时进行中 +- (void)onCountdownOpen:(int)time { + [self.codeView.authCodeButton setTitle:[NSString stringWithFormat:YMLocalizedString(@"LoginForgetPasswordViewController3"), time] forState:UIControlStateDisabled]; +} +///倒计时结束 +- (void)onCountdownFinish { + self.codeView.authCodeButton.enabled= YES; + [self.codeView.authCodeButton setTitle:YMLocalizedString(@"LoginForgetPasswordViewController4") forState:UIControlStateNormal]; +} +#pragma mark - Event Response +- (void)finishButtonAction:(UIButton *)sender { + [self.view endEditing:YES]; + [self.presenter resetPassword:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,self.phoneView.textField.text] newPwd:self.passwordView.textField.text smsCode:self.codeView.textField.text phoneAreaCode:self.phoneAreaCode]; +} + +- (void)authCodeButtonAction:(UIButton *)sender { + if(self.phoneView.textField.text.length == 0){ + [self showErrorToast:YMLocalizedString(@"LoginForgetPasswordViewController7")]; + return; + } + [self.view endEditing:YES]; + [self showLoading]; + [self.presenter phoneSmsCode:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,self.phoneView.textField.text] type:GetSmsType_Reset_Password phoneAreaCode:self.phoneAreaCode]; + +} +-(void)chooseAreaCodeAction{ + XPLoginAraeViewController *codeVC = [XPLoginAraeViewController new]; + codeVC.delegate = self; + [self.navigationController pushViewController:codeVC animated:YES]; +} +-(void)hidePasswordAction{ + self.passwordView.rightButton.selected = !self.passwordView.rightButton.selected; + self.passwordView.textField.secureTextEntry = !self.passwordView.rightButton.selected; +} +#pragma mark - Getters And Setters +- (UIButton *)finishButton{ + if (!_finishButton) { + _finishButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _finishButton.layer.masksToBounds = YES; + _finishButton.layer.cornerRadius = kGetScaleWidth(24); + [_finishButton setTitle:YMLocalizedString(@"LoginForgetPasswordViewController6") forState:UIControlStateNormal]; + _finishButton.titleLabel.font = kFontRegular(16); + [_finishButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _finishButton.enabled = NO; + UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(46))]; + [_finishButton setBackgroundImage:image forState:UIControlStateNormal]; + [_finishButton addTarget:self action:@selector(finishButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _finishButton; +} + + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = kGetScaleWidth(25); + } + return _stackView; +} + +- (LoginForgetEditView *)phoneView { + if (!_phoneView) { + _phoneView = [[LoginForgetEditView alloc] init]; +// _phoneView.placeholder = YMLocalizedString(@"LoginForgetPasswordViewController7"); + _phoneView.textField.keyboardType = UIKeyboardTypeNumberPad; + _phoneView.type = LoginForgetEditViewTypeNormal; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(chooseAreaCodeAction)]; + [_phoneView.codeView addGestureRecognizer:tap]; + } + return _phoneView; +} + +- (LoginForgetEditView *)codeView { + if (!_codeView) { + _codeView = [[LoginForgetEditView alloc] init]; + _codeView.placeholder = YMLocalizedString(@"LoginForgetPasswordViewController8"); + _codeView.type = LoginForgetEditViewTypeSms; + _codeView.textField.keyboardType = UIKeyboardTypeNumberPad; + [_codeView.authCodeButton addTarget:self action:@selector(authCodeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _codeView; +} + +- (LoginForgetEditView *)passwordView { + if (!_passwordView) { + _passwordView = [[LoginForgetEditView alloc] init]; + _passwordView.textField.secureTextEntry = YES; + _passwordView.placeholder = YMLocalizedString(@"LoginForgetPasswordViewController9"); + _passwordView.type = LoginForgetEditViewTypePassword; + _passwordView.textField.keyboardType = UIKeyboardTypeASCIICapable; + _passwordView.textField.clearButtonMode = UITextFieldViewModeAlways; + [_passwordView.rightButton addTarget:self action:@selector(hidePasswordAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _passwordView; +} + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m index 460d43cf..64948e38 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m @@ -96,7 +96,7 @@ NSString *phone = self.phoneInputView.inputTextField.text; NSString *smsCode = self.codeInputView.inputTextField.text; NSString *password = self.pwdInputView.inputTextField.text; - [self.presenter resetPassword:phone newPwd:password smsCode:smsCode]; + [self.presenter resetPassword:phone newPwd:password smsCode:smsCode phoneAreaCode:@""]; } #pragma mark - XPLoginInputViewDelegate diff --git a/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.m b/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.m index 2a486904..f5954523 100644 --- a/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.m +++ b/YuMi/Modules/YMLogin/View/XPLoginBindPhoneResultViewController.m @@ -1,8 +1,8 @@ // -// YMLoginBindPhoneResultViewController.m -// YUMI +// XPLoginBindPhoneResultViewController.m +// xplan-ios // -// Created by YUMI on 2021/9/17. +// Created by 冯硕 on 2021/9/17. // #import "XPLoginBindPhoneResultViewController.h" @@ -10,7 +10,6 @@ #import #import ///Tool -#import "DJDKMIMOMColor.h" #import "UIImage+Utils.h" ///Model #import "UserInfoModel.h" @@ -20,7 +19,6 @@ @property (nonatomic, strong) UIView *containerView; @property (nonatomic, strong) UIImageView *iconImageView; -@property (nonatomic, strong) UILabel *titleLabel; @property (nonatomic, strong) UILabel *phoneLabel; @property (nonatomic, strong) UIButton *changePhoneBtn; @@ -30,114 +28,99 @@ - (void)viewDidLoad { - [super viewDidLoad]; - [self initViews]; - [self setUpConstraints]; - [self setConfigs]; + [super viewDidLoad]; + [self initViews]; + [self setUpConstraints]; + [self setConfigs]; } #pragma mark - Private Method - (void)initViews { - [self.view addSubview:self.containerView]; - [self.containerView addSubview:self.iconImageView]; - [self.containerView addSubview:self.titleLabel]; - [self.containerView addSubview:self.phoneLabel]; - [self.containerView addSubview:self.changePhoneBtn]; + [self.view addSubview:self.containerView]; + [self.containerView addSubview:self.iconImageView]; + [self.containerView addSubview:self.phoneLabel]; + [self.containerView addSubview:self.changePhoneBtn]; } - (void)setConfigs { - self.title = YMLocalizedString(@"XPLoginBindPhoneResultViewController0"); - self.phoneLabel.text = self.userInfo.phone; + self.title = YMLocalizedString(@"XPLoginBindPhoneResultViewController0"); + NSMutableAttributedString *titleAtt = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"XPLoginBindPhoneResultViewController1") attributes:@{NSFontAttributeName:kFontSemibold(16),NSForegroundColorAttributeName:[DJDKMIMOMColor inputTextColor]}]; + NSAttributedString *phoneAtt = [[NSAttributedString alloc]initWithString:[NSString stringWithFormat:@"\n%@ %@",self.userInfo.phoneAreaCode,self.userInfo.phone] attributes:@{NSFontAttributeName:kFontSemibold(16),NSForegroundColorAttributeName:UIColorFromRGB(0x9168FA)}]; + [titleAtt appendAttributedString:phoneAtt]; + self.phoneLabel.attributedText = titleAtt; } - (void)setUpConstraints { - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(49); - make.left.right.bottom.mas_equalTo(0); - }]; - - [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(50); - make.centerX.mas_equalTo(0); - make.size.mas_equalTo(CGSizeMake(135, 130)); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(0); - make.top.mas_equalTo(self.iconImageView.mas_bottom).offset(39); - }]; - - [self.phoneLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(0); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(11); - }]; - - [self.changePhoneBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.phoneLabel.mas_bottom).offset(41); - make.left.right.mas_equalTo(0).inset(32); - make.centerX.mas_equalTo(0); - make.height.mas_equalTo(45); - }]; + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; + + [self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(30)); + make.centerX.mas_equalTo(0); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(164), kGetScaleWidth(112))); + }]; + + + + [self.phoneLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(184)); + make.centerX.equalTo(self.containerView); + }]; + [self.changePhoneBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.phoneLabel.mas_bottom).offset(kGetScaleWidth(47)); + make.leading.trailing.mas_equalTo(0).inset(15); + make.centerX.mas_equalTo(0); + make.height.mas_equalTo(kGetScaleWidth(46)); + }]; } #pragma mark - Event Response - (void)changePhoneBtnAction:(UIButton *)sender { - XPLoginVerifBindPhoneViewController *vc = [[XPLoginVerifBindPhoneViewController alloc] init]; - vc.userInfo = self.userInfo; - vc.bindingPhoneNumType = XPBindingPhoneNumTypeConfirm; - [self.navigationController pushViewController:vc animated:YES]; + XPLoginVerifBindPhoneViewController *vc = [[XPLoginVerifBindPhoneViewController alloc] init]; + vc.userInfo = self.userInfo; + vc.bindingPhoneNumType = XPBindingPhoneNumTypeConfirm; + [self.navigationController pushViewController:vc animated:YES]; } #pragma mark - Getters And Setters - (UIView *)containerView{ - if (!_containerView) { - _containerView = [[UIView alloc] init]; - _containerView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; - } - return _containerView; + if (!_containerView) { + _containerView = [[UIView alloc] init]; + _containerView.backgroundColor = [UIColor whiteColor]; + } + return _containerView; } - (UIImageView *)iconImageView{ - if (!_iconImageView) { - _iconImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"login_bind_phone_bg"]]; - } - return _iconImageView; + if (!_iconImageView) { + _iconImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"login_bind_phone_bg"]]; + } + return _iconImageView; } -- (UILabel *)titleLabel{ - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"XPLoginBindPhoneResultViewController1"); - _titleLabel.textColor = [DJDKMIMOMColor secondTextColor]; - _titleLabel.font = [UIFont systemFontOfSize:14.f]; - _titleLabel.adjustsFontSizeToFitWidth = YES; - _titleLabel.textAlignment = NSTextAlignmentCenter; - } - return _titleLabel; -} + - (UILabel *)phoneLabel{ - if (!_phoneLabel) { - _phoneLabel = [[UILabel alloc] init]; - _phoneLabel.textColor = [DJDKMIMOMColor mainTextColor]; - _phoneLabel.font = [UIFont boldSystemFontOfSize:18.f]; - _phoneLabel.adjustsFontSizeToFitWidth = YES; - _phoneLabel.textAlignment = NSTextAlignmentCenter; - } - return _phoneLabel; + if (!_phoneLabel) { + _phoneLabel = [[UILabel alloc] init]; + _phoneLabel.textAlignment = NSTextAlignmentCenter; + _phoneLabel.numberOfLines = 0; + } + return _phoneLabel; } - (UIButton *)changePhoneBtn { - if (!_changePhoneBtn) { - _changePhoneBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_changePhoneBtn setTitle:YMLocalizedString(@"XPLoginBindPhoneResultViewController2") forState:UIControlStateNormal]; - [_changePhoneBtn setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; - [_changePhoneBtn.titleLabel setFont:[UIFont fontWithName:@"PingFang-SC-Medium" size:18]]; - [_changePhoneBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _changePhoneBtn.layer.masksToBounds = YES; - _changePhoneBtn.layer.cornerRadius = 22.5; - [_changePhoneBtn addTarget:self action:@selector(changePhoneBtnAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _changePhoneBtn; + if (!_changePhoneBtn) { + _changePhoneBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_changePhoneBtn setTitle:YMLocalizedString(@"XPLoginBindPhoneResultViewController2") forState:UIControlStateNormal]; + [_changePhoneBtn setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_changePhoneBtn.titleLabel setFont:kFontRegular(16)]; + [_changePhoneBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _changePhoneBtn.layer.masksToBounds = YES; + _changePhoneBtn.layer.cornerRadius = kGetScaleWidth(23); + [_changePhoneBtn addTarget:self action:@selector(changePhoneBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _changePhoneBtn; } diff --git a/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.h b/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.h index e675dc53..c24d1d9d 100644 --- a/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.h +++ b/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.h @@ -1,8 +1,8 @@ // -// YMLoginVerifBindPhoneViewController.h -// YUMI +// XPLoginVerifBindPhoneViewController.h +// xplan-ios // -// Created by YUMI on 2021/9/18. +// Created by 冯硕 on 2021/9/18. // #import "MvpViewController.h" @@ -15,13 +15,14 @@ NS_ASSUME_NONNULL_BEGIN - TTBindingPhoneNumTypeConfirm : 验证状态:验证已绑定的手机 */ typedef NS_ENUM(NSUInteger, TTBindingPhoneNumType) { - XPBindingPhoneNumTypeNormal = 0, - XPBindingPhoneNumTypeEdit = 1, - XPBindingPhoneNumTypeConfirm = 2, + XPBindingPhoneNumTypeNormal = 0, + XPBindingPhoneNumTypeEdit = 1, + XPBindingPhoneNumTypeConfirm = 2, }; @class UserInfoModel; @interface XPLoginVerifBindPhoneViewController : MvpViewController @property (nonatomic, assign) TTBindingPhoneNumType bindingPhoneNumType; + ///用户信息 @property (nonatomic, strong) UserInfoModel *userInfo; @end diff --git a/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.m b/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.m index 96d98b9f..402cc3e7 100644 --- a/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.m +++ b/YuMi/Modules/YMLogin/View/XPLoginVerifBindPhoneViewController.m @@ -1,8 +1,8 @@ // -// YMLoginVerifBindPhoneViewController.m -// YUMI +// XPLoginVerifBindPhoneViewController.m +// xplan-ios // -// Created by YUMI on 2021/9/18. +// Created by 冯硕 on 2021/9/18. // #import "XPLoginVerifBindPhoneViewController.h" @@ -10,9 +10,8 @@ #import #import ///Tool -#import "DJDKMIMOMColor.h" -#import "YUMIConstant.h" -#import "YUMIMacroUitls.h" + + #import "UIImage+Utils.h" #import "CountDownHelper.h" ///Model @@ -25,409 +24,254 @@ #import "XPMineSettingViewController.h" ///View #import "XPLoginBindSuccessView.h" +#import "LoginForgetEditView.h" +#import "XPLoginAraeViewController.h" -@interface XPLoginVerifBindPhoneViewController () -@property (nonatomic, strong) UIView *containerView; -@property (nonatomic, strong) UILabel *areaLabel; -@property (nonatomic, strong) UIButton *countryBtn; -@property (nonatomic, strong) UIView *areaLineView; +@interface XPLoginVerifBindPhoneViewController () -@property (nonatomic, strong) UIView *phoneLineView; -@property (nonatomic, strong) UIView *authLineView; -@property (nonatomic, strong) UILabel *areaCodeLabel; - -@property (nonatomic, strong) UIButton *authCodeBtn; -@property (nonatomic, strong) UITextField *phoneNumTextField; -@property (nonatomic, strong) UITextField *authCodeTextField; - -@property (nonatomic, strong) UIButton *confirmBtn; // 确认按钮 - -@property (nonatomic, strong) UILabel *tipsLabel; // 手机号丢失 -@property (nonatomic, assign) BOOL isResetPhone; // 重新绑定手机 +///手机号 +@property (nonatomic,strong) LoginForgetEditView *phoneView; +///验证码 +@property (nonatomic,strong) LoginForgetEditView *codeView; +///手机区号 +@property (nonatomic,copy)NSString *phoneAreaCode; +// 确认按钮 +@property (nonatomic, strong) UIButton *confirmBtn; +// 重新绑定手机 +@property (nonatomic, assign) BOOL isResetPhone; @end @implementation XPLoginVerifBindPhoneViewController - (void)dealloc { - [[CountDownHelper shareHelper] stopCountDown]; + [[CountDownHelper shareHelper] stopCountDown]; } - (XPLoginVerifBindPhonePresenter *)createPresenter { - return [[XPLoginVerifBindPhonePresenter alloc] init]; + return [[XPLoginVerifBindPhonePresenter alloc] init]; } - (void)viewDidLoad { [super viewDidLoad]; - [self initSubViews]; - [self initSubViewConstraints]; - [self setConfigs]; - [self setEvents]; + self.phoneAreaCode = @"852"; + [self initSubViews]; + [self initSubViewConstraints]; + [self setConfigs]; + [self setEvents]; } - (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - [[CountDownHelper shareHelper] stopCountDown]; + [super viewDidDisappear:animated]; + [[CountDownHelper shareHelper] stopCountDown]; + self.codeView.authCodeButton.enabled= YES; + [self.codeView.authCodeButton setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController11") forState:UIControlStateNormal]; } #pragma mark - Private Method - (void)initSubViews { - [CountDownHelper shareHelper].delegate = self; - [self.view addSubview:self.containerView]; - [self.containerView addSubview:self.areaLabel]; - [self.containerView addSubview:self.countryBtn]; - - [self.containerView addSubview:self.areaLineView]; - [self.containerView addSubview:self.areaCodeLabel]; - [self.containerView addSubview:self.phoneNumTextField]; - [self.containerView addSubview:self.phoneLineView]; - - [self.containerView addSubview:self.authCodeBtn]; - [self.containerView addSubview:self.authCodeTextField]; - [self.containerView addSubview:self.authLineView]; - - [self.containerView addSubview:self.confirmBtn]; - [self.containerView addSubview:self.tipsLabel]; + [CountDownHelper shareHelper].delegate = self; + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.codeView]; + [self.view addSubview:self.phoneView]; + [self.view addSubview:self.confirmBtn]; + } - (void)initSubViewConstraints { - [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.left.right.bottom.mas_equalTo(0); - }]; - - [self.areaLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(32); - make.top.mas_equalTo(20); - }]; - - [self.countryBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-32); - make.centerY.mas_equalTo(self.areaLabel); - }]; - - [self.areaLineView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.areaLabel.mas_bottom).offset(18); - make.left.right.mas_equalTo(0).inset(32); - make.height.mas_equalTo(1); - }]; - - [self.areaCodeLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.areaLineView.mas_bottom).offset(18); - make.left.mas_equalTo(self.areaLabel); - }]; - - [self.phoneNumTextField mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(80); - make.centerY.mas_equalTo(self.areaCodeLabel); - make.right.mas_equalTo(self.authCodeBtn.mas_left).offset(-20); - }]; - - [self.authCodeBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(-32); - make.centerY.mas_equalTo(self.areaCodeLabel); - }]; - - [self.phoneLineView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.height.mas_equalTo(self.areaLineView); - make.top.mas_equalTo(self.areaCodeLabel.mas_bottom).offset(18); - }]; - - [self.authCodeTextField mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0).inset(32); - make.height.mas_equalTo(48); - make.top.mas_equalTo(self.phoneLineView.mas_bottom); - }]; - - [self.authLineView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.left.right.mas_equalTo(self.areaLineView); - make.top.mas_equalTo(self.authCodeTextField.mas_bottom); - }]; - - [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(0).inset(32); - make.top.mas_equalTo(self.authLineView.mas_bottom).offset(70); - make.height.mas_equalTo(45); - }]; - - [self.tipsLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.confirmBtn.mas_bottom).offset(36); - make.centerX.mas_equalTo(0); - }]; + [self.phoneView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(30)); + make.leading.trailing.equalTo(self.view).inset(kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(48)); + }]; + [self.codeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.height.equalTo(self.phoneView); + make.top.equalTo(self.phoneView.mas_bottom).mas_offset(kGetScaleWidth(25)); + }]; + [self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.equalTo(self.view).inset(kGetScaleWidth(15)); + make.height.mas_equalTo(kGetScaleWidth(46)); + make.top.mas_equalTo(kGetScaleWidth(275)); + }]; } #pragma mark -配置 - (void)setConfigs { - switch (self.bindingPhoneNumType) { - case XPBindingPhoneNumTypeEdit:{ - self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController0"); - } - break; - case XPBindingPhoneNumTypeNormal:{ - self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController1"); - } - break; - case XPBindingPhoneNumTypeConfirm:{ - self.tipsLabel.hidden = NO; - self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController2"); - [self.confirmBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController3") forState:UIControlStateNormal]; - if (self.userInfo.isBindPhone) { - self.phoneNumTextField.enabled = NO; - self.phoneNumTextField.text = self.userInfo.phone; - } - } - break; - default: - break; - } - - RAC(self.confirmBtn,enabled) = [RACSignal combineLatest:@[self.phoneNumTextField.rac_textSignal,self.authCodeTextField.rac_textSignal] reduce:^(NSString *phone,NSString *code){ - return @(phone.length == 11 && code.length == 5); - }]; - + switch (self.bindingPhoneNumType) { + case XPBindingPhoneNumTypeEdit:{ + self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController0"); + } + break; + case XPBindingPhoneNumTypeNormal:{ + self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController1"); + } + break; + case XPBindingPhoneNumTypeConfirm:{ + + self.navigationItem.title = YMLocalizedString(@"XPLoginVerifBindPhoneViewController2"); + [self.confirmBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController3") forState:UIControlStateNormal]; + if (self.userInfo.isBindPhone) { +// self.phoneNumTextField.enabled = NO; +// self.phoneNumTextField.text = self.userInfo.phone; + } + } + break; + default: + break; + } + + RAC(self.confirmBtn,enabled) = [RACSignal combineLatest:@[self.phoneView.textField.rac_textSignal,self.codeView.textField.rac_textSignal] reduce:^(NSString *phone,NSString *code){ + return @(phone.length > 0 && code.length == 5); + }]; + } - +#pragma mark - XPChooseAreaCodeVCDelegate +-(void)chooseAreaCodeSuccess:(NSString *)code{ + self.phoneAreaCode = code; + self.phoneView.areaCode = [NSString stringWithFormat:@"+%@",code]; +} +-(void)chooseAreaCodeAction{ + XPLoginAraeViewController *codeVC = [XPLoginAraeViewController new]; + codeVC.delegate = self; + [self.navigationController pushViewController:codeVC animated:YES]; +} #pragma mark 交互事件 - (void)setEvents { - @weakify(self) - // 获取验证码点击事件 - [[[self.authCodeBtn rac_signalForControlEvents:UIControlEventTouchUpInside] filter:^BOOL(__kindof UIControl * _Nullable value) { - // 获取验证码 - if (self.phoneNumTextField.text.length == 0) { - [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController4")]; - return NO; - }else if (self.phoneNumTextField.text.length < 11) { - [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController5")]; - return NO; - }else { - return YES; - } - }] subscribeNext:^(id _Nullable x) { - @strongify(self); - [self.presenter phoneSmsCode:self.phoneNumTextField.text type:self.bindingPhoneNumType == XPBindingPhoneNumTypeConfirm ? GetSmsType_Unbind_Phone : GetSmsType_Bind_Phone phoneAreaCode:@""]; - }]; - - - // 绑定和验证 - [[[self.confirmBtn rac_signalForControlEvents:UIControlEventTouchUpInside] filter:^BOOL(__kindof UIControl * _Nullable value) { - @strongify(self) - // 确认绑定手机号 - if (self.phoneNumTextField.text.length == 0) { - [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController6")]; - return NO; - }else if (self.authCodeTextField.text.length == 0) { - [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController7")]; - return NO; - }else { - return YES; - } - }] subscribeNext:^(id _Nullable x) { - @strongify(self) - if (self.bindingPhoneNumType == XPBindingPhoneNumTypeConfirm) { - [self.presenter checkMoblieCodeWithMoblie:self.phoneNumTextField.text code:self.authCodeTextField.text]; - } else { - [self.presenter bindkMoblieCodeWithMoblie:self.phoneNumTextField.text code:self.authCodeTextField.text]; - } - } error:^(NSError * _Nullable error) { - - }]; + @weakify(self) + // 获取验证码点击事件 + [[[self.codeView.authCodeButton rac_signalForControlEvents:UIControlEventTouchUpInside] filter:^BOOL(__kindof UIControl * _Nullable value) { + // 获取验证码 + if (self.phoneView.textField.text.length == 0) { + [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController4")]; + return NO; + } + return YES; + }] subscribeNext:^(id _Nullable x) { + @strongify(self); + [self.presenter phoneSmsCode:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,self.phoneView.textField.text] type:self.bindingPhoneNumType == XPBindingPhoneNumTypeConfirm ? GetSmsType_Unbind_Phone : GetSmsType_Bind_Phone phoneAreaCode:self.phoneAreaCode]; + }]; + +// // 绑定和验证 + [[[self.confirmBtn rac_signalForControlEvents:UIControlEventTouchUpInside] filter:^BOOL(__kindof UIControl * _Nullable value) { + @strongify(self) + // 确认绑定手机号 + if (self.phoneView.textField.text.length == 0) { + [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController6")]; + return NO; + }else if (self.codeView.textField.text.length == 0) { + [self showErrorToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController7")]; + return NO; + }else { + return YES; + } + }] subscribeNext:^(id _Nullable x) { + @strongify(self) + [self.view endEditing:YES]; + if (self.bindingPhoneNumType == XPBindingPhoneNumTypeConfirm) { + [self.presenter checkMoblieCodeWithMoblie:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,self.phoneView.textField.text] code:self.codeView.textField.text phoneAreaCode:self.phoneAreaCode]; + } else { + [self.presenter bindkMoblieCodeWithMoblie:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,self.phoneView.textField.text] code:self.codeView.textField.text phoneAreaCode:self.phoneAreaCode]; + } + } error:^(NSError * _Nullable error) { + + }]; } #pragma mark - XPLoginVerifBindPhoneProtocol - (void)phoneSmsCodeSuccess { - self.authCodeBtn.enabled = NO; - [self showSuccessToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController8")]; - [[CountDownHelper shareHelper] openCountdownWithTime:60]; + self.codeView.authCodeButton.enabled = NO; + [self showSuccessToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController8")]; + [[CountDownHelper shareHelper] openCountdownWithTime:60]; } - (void)checkMoblieCodeWithMoblieSuccess { - [self showSuccessToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController9")]; - [[CountDownHelper shareHelper] stopCountDown]; - XPLoginVerifBindPhoneViewController *vc = [[XPLoginVerifBindPhoneViewController alloc] init]; - vc.bindingPhoneNumType = XPBindingPhoneNumTypeEdit; - vc.userInfo = self.userInfo; - [self.navigationController pushViewController:vc animated:YES]; + [self showSuccessToast:YMLocalizedString(@"XPLoginVerifBindPhoneViewController9")]; + [[CountDownHelper shareHelper] stopCountDown]; + XPLoginVerifBindPhoneViewController *vc = [[XPLoginVerifBindPhoneViewController alloc] init]; + vc.bindingPhoneNumType = XPBindingPhoneNumTypeEdit; + vc.userInfo = self.userInfo; + [self.navigationController pushViewController:vc animated:YES]; } - (void)bindMoblieCodeWithMoblieSuccess { - [[CountDownHelper shareHelper] stopCountDown]; - // 修改绑定信息 - if (self.bindingPhoneNumType == XPBindingPhoneNumTypeEdit) { - @weakify(self); - [XPLoginBindSuccessView showBindSuccessViewWithHandler:^{ - @strongify(self); - // 返回设置页面 - __block __kindof UIViewController *vc; - [self.navigationController.childViewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[XPMineSettingViewController class]]) { - vc = obj; // 导航控制器中有设置VC - } - }]; - - if ([self.navigationController.childViewControllers containsObject:vc]) { - [self.navigationController popToViewController:vc animated:YES]; - } else { - [self.navigationController popViewControllerAnimated:YES]; - } - }]; - } else if (self.bindingPhoneNumType == XPBindingPhoneNumTypeNormal) { - @weakify(self); - [XPLoginBindSuccessView showBindSuccessViewWithHandler:^{ - @strongify(self); - [self.navigationController popViewControllerAnimated:YES]; - }]; - } - self.confirmBtn.enabled = YES; // 打开交互 + + [[CountDownHelper shareHelper] stopCountDown]; + // 修改绑定信息 + if (self.bindingPhoneNumType == XPBindingPhoneNumTypeEdit) { + @weakify(self); + [XPLoginBindSuccessView showBindSuccessViewWithHandler:^{ + @strongify(self); + // 返回设置页面 + __block __kindof UIViewController *vc; + [self.navigationController.childViewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPMineSettingViewController class]]) { + vc = obj; // 导航控制器中有设置VC + } + }]; + + if ([self.navigationController.childViewControllers containsObject:vc]) { + [self.navigationController popToViewController:vc animated:YES]; + } else { + [self.navigationController popViewControllerAnimated:YES]; + } + }]; + } else if (self.bindingPhoneNumType == XPBindingPhoneNumTypeNormal) { + @weakify(self); + [XPLoginBindSuccessView showBindSuccessViewWithHandler:^{ + @strongify(self); + [self.navigationController popViewControllerAnimated:YES]; + }]; + } + self.confirmBtn.enabled = YES; // 打开交互 } #pragma mark - CountDownHelperDelegate ///倒计时进行中 - (void)onCountdownOpen:(int)time { - [self.authCodeBtn setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPLoginVerifBindPhoneViewController10"), time] forState:UIControlStateDisabled]; + [self.codeView.authCodeButton setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPLoginVerifBindPhoneViewController10"), time] forState:UIControlStateDisabled]; } ///倒计时结束 - (void)onCountdownFinish { - self.authCodeBtn.enabled= YES; - [self.authCodeBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController11") forState:UIControlStateNormal]; + self.codeView.authCodeButton.enabled= YES; + [self.codeView.authCodeButton setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController11") forState:UIControlStateNormal]; } #pragma mark - Getters And Setters -- (UIView *)containerView{ - if (!_containerView) { - _containerView = [[UIView alloc] init]; - _containerView.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; - } - return _containerView; -} - -- (UILabel *)areaLabel{ - if (!_areaLabel) { - _areaLabel = [[UILabel alloc] init]; - _areaLabel.text = YMLocalizedString(@"XPLoginVerifBindPhoneViewController12"); - _areaLabel.textColor = [DJDKMIMOMColor secondTextColor]; - _areaLabel.font = [UIFont systemFontOfSize:14.f]; - _areaLabel.adjustsFontSizeToFitWidth = YES; - } - return _areaLabel; -} - -- (UILabel *)areaCodeLabel{ - if (!_areaCodeLabel) { - _areaCodeLabel = [[UILabel alloc] init]; - _areaCodeLabel.text = @"+852"; - _areaCodeLabel.textColor = [DJDKMIMOMColor secondTextColor]; - _areaCodeLabel.font = [UIFont systemFontOfSize:14.f]; - _areaCodeLabel.adjustsFontSizeToFitWidth = YES; - } - return _areaCodeLabel; -} - -- (UIButton *)countryBtn { - if (!_countryBtn) { - _countryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_countryBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController13") forState:UIControlStateNormal]; - [_countryBtn setImage:[UIImage imageNamed:@"mine_item_arrow"] forState:UIControlStateNormal]; - _countryBtn.transform = CGAffineTransformMakeScale(-1.0, 1.0); - _countryBtn.titleLabel.transform = CGAffineTransformMakeScale(-1.0, 1.0); - _countryBtn.imageView.transform = CGAffineTransformMakeScale(-1.0, 1.0); - _countryBtn.imageEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0); - [_countryBtn setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; - [_countryBtn.titleLabel setFont:[UIFont systemFontOfSize:14.f]]; - } - return _countryBtn; -} - (UIButton *)confirmBtn { - if (!_confirmBtn) { - _confirmBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_confirmBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController14") forState:UIControlStateNormal]; - [_confirmBtn setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; - [_confirmBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; - [_confirmBtn.titleLabel setFont:[UIFont fontWithName:@"PingFang-SC-Medium" size:18]]; - _confirmBtn.layer.cornerRadius = 22.5f; - _confirmBtn.layer.masksToBounds = YES; - _confirmBtn.enabled = NO; - [_confirmBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_confirmBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - } - return _confirmBtn; + if (!_confirmBtn) { + _confirmBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_confirmBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController14") forState:UIControlStateNormal]; + [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_confirmBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateDisabled]; + [_confirmBtn.titleLabel setFont:kFontRegular(16)]; + _confirmBtn.layer.cornerRadius = kGetScaleWidth(23); + _confirmBtn.layer.masksToBounds = YES; + _confirmBtn.enabled = NO; + [_confirmBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + + } + return _confirmBtn; } -- (UIButton *)authCodeBtn { - if (!_authCodeBtn) { - _authCodeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_authCodeBtn setTitle:YMLocalizedString(@"XPLoginVerifBindPhoneViewController15") forState:UIControlStateNormal]; - [_authCodeBtn setTitleColor:[DJDKMIMOMColor appMainColor] forState:UIControlStateNormal]; - [_authCodeBtn setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateDisabled]; - [_authCodeBtn.titleLabel setFont:[UIFont systemFontOfSize:12.f]]; - } - return _authCodeBtn; +- (LoginForgetEditView *)phoneView { + if (!_phoneView) { + _phoneView = [[LoginForgetEditView alloc] init]; +// _phoneView.placeholder = YMLocalizedString(@"LoginForgetPasswordViewController7"); + _phoneView.type = LoginForgetEditViewTypeNormal; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(chooseAreaCodeAction)]; + [_phoneView.codeView addGestureRecognizer:tap]; + } + return _phoneView; } -- (UITextField *)phoneNumTextField { - if (!_phoneNumTextField) { - _phoneNumTextField = [[UITextField alloc] init]; - _phoneNumTextField.textColor = [DJDKMIMOMColor mainTextColor]; - _phoneNumTextField.font = [UIFont systemFontOfSize:14.f]; - _phoneNumTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginVerifBindPhoneViewController16")attributes:@{NSForegroundColorAttributeName: [DJDKMIMOMColor secondTextColor]}]; - _phoneNumTextField.clearButtonMode = UITextFieldViewModeWhileEditing; - _phoneNumTextField.borderStyle = UITextBorderStyleNone; - _phoneNumTextField.keyboardType = UIKeyboardTypeNumberPad; - _phoneNumTextField.tintColor = [DJDKMIMOMColor mainTextColor]; - } - return _phoneNumTextField; -} - - -- (UITextField *)authCodeTextField { - if (!_authCodeTextField) { - _authCodeTextField = [[UITextField alloc] init]; - _authCodeTextField.textColor = [DJDKMIMOMColor mainTextColor]; - _authCodeTextField.font = [UIFont systemFontOfSize:14.f]; - _authCodeTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginVerifBindPhoneViewController17")attributes:@{NSForegroundColorAttributeName: [DJDKMIMOMColor secondTextColor]}]; - _authCodeTextField.clearButtonMode = UITextFieldViewModeWhileEditing; - _authCodeTextField.borderStyle = UITextBorderStyleNone; - _authCodeTextField.keyboardType = UIKeyboardTypeNumberPad; - _authCodeTextField.tintColor = [DJDKMIMOMColor mainTextColor]; - } - return _authCodeTextField; -} - -- (UIView *)areaLineView { - if (!_areaLineView) { - _areaLineView = [[UIView alloc] init]; - _areaLineView.backgroundColor = [DJDKMIMOMColor dividerColor]; - } - return _areaLineView; -} - -- (UIView *)phoneLineView { - if (!_phoneLineView) { - _phoneLineView = [[UIView alloc] init]; - _phoneLineView.backgroundColor = [DJDKMIMOMColor dividerColor]; - } - return _phoneLineView; -} - -- (UIView *)authLineView { - if (!_authLineView) { - _authLineView = [[UIView alloc] init]; - _authLineView.backgroundColor = [DJDKMIMOMColor dividerColor]; - } - return _authLineView; -} - -- (UILabel *)tipsLabel{ - if (!_tipsLabel) { - _tipsLabel = [[UILabel alloc] init]; - _tipsLabel.text = [NSString stringWithFormat:@"如果您的手机号已丢失\n请咨询客服,ID:%@", @"88001"]; - _tipsLabel.textColor = [DJDKMIMOMColor textThirdColor]; - _tipsLabel.font = [UIFont systemFontOfSize:14.f]; - _tipsLabel.adjustsFontSizeToFitWidth = YES; - _tipsLabel.numberOfLines = 0; - _tipsLabel.hidden = YES; - } - return _tipsLabel; +- (LoginForgetEditView *)codeView { + if (!_codeView) { + _codeView = [[LoginForgetEditView alloc] init]; + _codeView.placeholder = YMLocalizedString(@"XPLoginVerifBindPhoneViewController17"); + _codeView.type = LoginForgetEditViewTypeSms; + } + return _codeView; } @end diff --git a/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.h b/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.h index 9f2662aa..bafa349c 100644 --- a/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.h +++ b/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.h @@ -20,7 +20,7 @@ NS_ASSUME_NONNULL_BEGIN /// 校验手机验证码接口 /// @param moblieNum 手机号码 /// @param code 验证码 -- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code; +- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.m b/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.m index f6b05135..17b16c50 100644 --- a/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.m +++ b/YuMi/Modules/YMMine/Presenter/XPMineVerifIdentityPresenter.m @@ -35,13 +35,13 @@ /// 校验手机验证码接口 /// @param moblieNum 手机号码 /// @param code 验证码 -- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code { +- (void)checkMoblieCodeWithMoblie:(NSString *)moblieNum code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode{ NSString * uid = [[AccountInfoStorage instance] getUid]; NSString * ticket = [[AccountInfoStorage instance] getTicket]; NSString * desPhone = [DESEncrypt encryptUseDES:moblieNum key:KeyWithType(KeyType_PasswordEncode)]; [Api checkMoblieCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] checkMoblieCodeWithMoblieSuccess]; - }] mobile:desPhone code:code uid:uid ticket:ticket]; + }] mobile:desPhone code:code uid:uid ticket:ticket phoneAreaCode:phoneAreaCode]; } @end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m index 0371d32a..5810a265 100644 --- a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m @@ -29,7 +29,7 @@ ///金币 @property (nonatomic,strong) XPIncomeRecordView *goldView; ///model -@property (nonatomic,strong) XPIncomeRecordModel *recordModel; +@property (nonatomic,strong) XPIncomeRecordModel *recordModel; @end @implementation XPIncomeRecordVC @@ -63,7 +63,7 @@ [self.goldView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.diamondView); make.top.equalTo(self.diamondView.mas_bottom).mas_offset(kGetScaleWidth(20)); - make.height.mas_equalTo(!self.goldView.isClanPresident ? kGetScaleWidth( 144) : kGetScaleWidth(90)); + make.height.mas_equalTo( kGetScaleWidth(144)); }]; } #pragma mark - XPExchangeDiamondsVCDelegate @@ -92,15 +92,15 @@ self.goldView.hidden = self.recordModel.roomType == 4; self.diamondView.number = @(model.diamonds).stringValue; self.goldView.number = [NSString stringWithFormat:@"%.2f",model.golds]; - NSString * myUid = [AccountInfoStorage instance].getUid; - if(![self.clanInfo.clan.elderUid isEqualToString:myUid]){ - self.goldView.isClanPresident = !self.recordModel.hasGoldExchangeAuth; - if(self.recordModel.hasGoldExchangeAuth == YES){ - [self.goldView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth( 144)); - }]; - } - } + // NSString * myUid = [AccountInfoStorage instance].getUid; + // if(![self.clanInfo.clan.elderUid isEqualToString:myUid]){ + // self.goldView.isClanPresident = !self.recordModel.hasGoldExchangeAuth; + // if(self.recordModel.hasGoldExchangeAuth == YES){ + // [self.goldView mas_updateConstraints:^(MASConstraintMaker *make) { + // make.height.mas_equalTo(kGetScaleWidth( 144)); + // }]; + // } + // } } @@ -117,7 +117,7 @@ } case ClickType_Diamond_Pay: { - XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init]; + XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init]; [self.navigationController pushViewController:webVC animated:YES]; break; } @@ -131,12 +131,21 @@ } [self showLoading]; [self.presenter getExchangeDiamondInformation]; - + break; } default: { + + NSString * myUid = [AccountInfoStorage instance].getUid; + if(![self.clanInfo.clan.elderUid isEqualToString:myUid]){ + XPWebViewController * webVC =[[XPWebViewController alloc] init]; + webVC.url = URLWithType(kGoldEarningsRecord); + [self.navigationController pushViewController:webVC animated:YES]; + return; + + } XPIncomeRecordGoldDetailsVC *goldDetailVC = [XPIncomeRecordGoldDetailsVC new]; [self.navigationController pushViewController:goldDetailVC animated:YES]; break; diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m index a45e1d59..11261c77 100644 --- a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordView.m @@ -90,8 +90,8 @@ } -(void)setIsClanPresident:(BOOL)isClanPresident{ _isClanPresident = isClanPresident; - _exchangeBtn.hidden = _isClanPresident; - _detailView.hidden = !_isClanPresident; +// _exchangeBtn.hidden = _isClanPresident; +// _detailView.hidden = !_isClanPresident; } #pragma mark - btnClick -(void)clickDetailViewAction{ diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.m index 8f482a94..5a03e7b7 100644 --- a/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.m +++ b/YuMi/Modules/YMMine/View/Setting/XPMineLoginPasswordViewController.m @@ -1,8 +1,8 @@ // -// YMMineLoginPasswordViewController.m -// YUMI +// XPMineLoginPasswordViewController.m +// xplan-ios // -// Created by YUMI on 2022/4/25. +// Created by 冯硕 on 2022/4/25. // #import "XPMineLoginPasswordViewController.h" @@ -10,7 +10,7 @@ #import #import ///Tool -#import "DJDKMIMOMColor.h" + #import "UIButton+EnlargeTouchArea.h" #import "UIImage+Utils.h" ///Model @@ -22,6 +22,7 @@ #import "XPMineLoginPasswordProtocol.h" ///VC #import "XPMineSettingViewController.h" +#import "LoginForgetPasswordViewController.h" #import "XPMineResetLoginPwdViewController.h" @interface XPMineLoginPasswordViewController () @@ -50,194 +51,200 @@ @implementation XPMineLoginPasswordViewController - (XPMineLoginPasswordPresenter *)createPresenter { - return [[XPMineLoginPasswordPresenter alloc] init]; + return [[XPMineLoginPasswordPresenter alloc] init]; } - (void)viewDidLoad { - [super viewDidLoad]; - [self initSubViews]; - [self initSubViewConstraints]; + [super viewDidLoad]; + [self initSubViews]; + [self initSubViewConstraints]; } #pragma mark - Private Method - (void)initSubViews { - [self.view addSubview:self.stackView]; - [self.view addSubview:self.limitLabel]; - [self.view addSubview:self.forgetButton]; - [self.view addSubview:self.submitButton]; - [self.stackView addArrangedSubview:self.currentPwdView]; - [self.stackView addArrangedSubview:self.newsPwdView]; - [self.stackView addArrangedSubview:self.checkPwdView]; + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.stackView]; + [self.view addSubview:self.limitLabel]; + [self.view addSubview:self.forgetButton]; + [self.view addSubview:self.submitButton]; + [self.stackView addArrangedSubview:self.currentPwdView]; + [self.stackView addArrangedSubview:self.newsPwdView]; + [self.stackView addArrangedSubview:self.checkPwdView]; } - (void)initSubViewConstraints { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - }]; - - [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view).offset(15); - make.top.mas_equalTo(self.stackView.mas_bottom).offset(10); - }]; - - [self.forgetButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.view).offset(-15); - make.top.mas_equalTo(self.submitButton.mas_bottom).offset(15); - }]; - [self.submitButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.limitLabel.mas_bottom).offset(20); - make.right.mas_equalTo(self.view).offset(-32); - make.left.mas_equalTo(self.view).offset(32); - make.height.mas_equalTo(45); - }]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.mas_equalTo(self.view); + make.top.mas_equalTo(30); + }]; + + [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(self.view).offset(20); + make.trailing.mas_equalTo(-20); + make.top.mas_equalTo(self.stackView.mas_bottom).offset(10); + }]; + + [self.forgetButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(self.view).offset(-20); + make.top.mas_equalTo(self.submitButton.mas_bottom).offset(15); + }]; + [self.submitButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.limitLabel.mas_bottom).offset(20); + make.trailing.mas_equalTo(self.view).offset(-32); + make.leading.mas_equalTo(self.view).offset(32); + make.height.mas_equalTo(45); + }]; } #pragma mark - XPMineLoginPasswordProtocol - (void)setLoginPasswordSuccess { - [self showSuccessToast:YMLocalizedString(@"XPMineLoginPasswordViewController0")]; - [self.navigationController popViewControllerAnimated:YES]; + [self showSuccessToast:YMLocalizedString(@"XPMineLoginPasswordViewController0")]; + [self.navigationController popViewControllerAnimated:YES]; } - (void)modifyLoginPasswordSuccess { - [self showSuccessToast:YMLocalizedString(@"XPMineLoginPasswordViewController1")]; - [self.navigationController popViewControllerAnimated:YES]; + [self showSuccessToast:YMLocalizedString(@"XPMineLoginPasswordViewController1")]; + [self.navigationController popViewControllerAnimated:YES]; } #pragma mark - Event Response - (void)forgetButtonAction:(UIButton *)sender { - XPMineResetLoginPwdViewController * VC= [[XPMineResetLoginPwdViewController alloc] init]; - VC.userInfo = self.userInfo; - [self.navigationController pushViewController:VC animated:YES]; + + LoginForgetPasswordViewController *forgetPawVC = [LoginForgetPasswordViewController new]; + forgetPawVC.isLogout = YES; + [self.navigationController pushViewController:forgetPawVC animated:YES]; + } - (void)submitButtonAction:(UIButton *)sender { - if (![self.newsPwdView.contentTextField.text isEqualToString:self.checkPwdView.contentTextField.text]) { - [self showErrorToast:YMLocalizedString(@"XPMineLoginPasswordViewController2")]; - return; - } - if (self.isModifiPwd) { - [self.presenter modifyLoginPassword:self.userInfo.phone newPwd:self.newsPwd pwd:self.currentPwd]; - } else { - [self.presenter setLoginPassword:self.userInfo.phone newPwd:self.newsPwd]; - } + if (![self.newsPwdView.contentTextField.text isEqualToString:self.checkPwdView.contentTextField.text]) { + [self showErrorToast:YMLocalizedString(@"XPMineLoginPasswordViewController2")]; + return; + } + if (self.isModifiPwd) { + [self.presenter modifyLoginPassword:self.userInfo.phone newPwd:self.newsPwd pwd:self.currentPwd]; + } else { + [self.presenter setLoginPassword:self.userInfo.phone newPwd:self.newsPwd]; + } } - (void)textFieldDidChange:(UITextField *)textfield { - if (textfield == self.currentPwdView.contentTextField) { - self.currentPwd = textfield.text; - } else if (textfield == self.newsPwdView.contentTextField) { - self.newsPwd = textfield.text; - } else { - self.checkPwd = textfield.text; - } - - if (self.isModifiPwd) { - if (self.currentPwd.length >= 6 && self.newsPwd.length >= 6 && self.checkPwd.length >= 6) { - self.submitButton.enabled = YES; - } else { - self.submitButton.enabled = NO; - } - } else { - if (self.newsPwd.length >= 6 && self.checkPwd.length >= 6) { - self.submitButton.enabled = YES; - } else { - self.submitButton.enabled = NO; - } - } + if (textfield == self.currentPwdView.contentTextField) { + self.currentPwd = textfield.text; + } else if (textfield == self.newsPwdView.contentTextField) { + self.newsPwd = textfield.text; + } else { + self.checkPwd = textfield.text; + } + + if (self.isModifiPwd) { + if (self.currentPwd.length >= 6 && self.newsPwd.length >= 6 && self.checkPwd.length >= 6) { + self.submitButton.enabled = YES; + } else { + self.submitButton.enabled = NO; + } + } else { + if (self.newsPwd.length >= 6 && self.checkPwd.length >= 6) { + self.submitButton.enabled = YES; + } else { + self.submitButton.enabled = NO; + } + } } #pragma mark - Getters And Setters - (void)setIsModifiPwd:(BOOL)isModifiPwd { - _isModifiPwd = isModifiPwd; - if (_isModifiPwd) { - self.currentPwdView.hidden = NO; - self.currentPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController3"); - self.newsPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController4"); - self.checkPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController5"); - self.title = YMLocalizedString(@"XPMineLoginPasswordViewController6"); - } else { - self.currentPwdView.hidden = YES; - self.newsPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController7"); - self.checkPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController8"); - self.forgetButton.hidden = YES; - self.title = YMLocalizedString(@"XPMineLoginPasswordViewController9"); - } - self.currentPwdView.hidden = !_isModifiPwd; + _isModifiPwd = isModifiPwd; + if (_isModifiPwd) { + self.currentPwdView.hidden = NO; + self.currentPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController3"); + self.newsPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController4"); + self.checkPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController5"); + self.title = YMLocalizedString(@"XPMineLoginPasswordViewController6"); + } else { + self.currentPwdView.hidden = YES; + self.newsPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController7"); + self.checkPwdView.placeholder = YMLocalizedString(@"XPMineLoginPasswordViewController8"); + self.forgetButton.hidden = YES; + self.title = YMLocalizedString(@"XPMineLoginPasswordViewController9"); + } + self.currentPwdView.hidden = !_isModifiPwd; } - (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 25; + } + return _stackView; } - (XPMineModifPayPwdView *)currentPwdView { - if (!_currentPwdView) { - _currentPwdView = [[XPMineModifPayPwdView alloc] init]; - [_currentPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; - _currentPwdView.hidden = YES; - } - return _currentPwdView; + if (!_currentPwdView) { + _currentPwdView = [[XPMineModifPayPwdView alloc] init]; + [_currentPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + _currentPwdView.hidden = YES; + } + return _currentPwdView; } - (XPMineModifPayPwdView *)newsPwdView { - if (!_newsPwdView) { - _newsPwdView = [[XPMineModifPayPwdView alloc] init]; - [_newsPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; - } - return _newsPwdView; + if (!_newsPwdView) { + _newsPwdView = [[XPMineModifPayPwdView alloc] init]; + [_newsPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + } + return _newsPwdView; } - (XPMineModifPayPwdView *)checkPwdView { - if (!_checkPwdView) { - _checkPwdView = [[XPMineModifPayPwdView alloc] init]; - [_checkPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; - } - return _checkPwdView; + if (!_checkPwdView) { + _checkPwdView = [[XPMineModifPayPwdView alloc] init]; + [_checkPwdView.contentTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; + } + return _checkPwdView; } - (UIButton *)submitButton { - if (!_submitButton) { - _submitButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_submitButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; - [_submitButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; - [_submitButton setTitle:YMLocalizedString(@"XPMineLoginPasswordViewController10") forState:UIControlStateNormal]; - _submitButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _submitButton.layer.masksToBounds = YES; - _submitButton.layer.cornerRadius = 45/2; - _submitButton.enabled = YES; - [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_submitButton addTarget:self action:@selector(submitButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _submitButton; + if (!_submitButton) { + _submitButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_submitButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_submitButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_submitButton setTitle:YMLocalizedString(@"XPMineLoginPasswordViewController10") forState:UIControlStateNormal]; + _submitButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + _submitButton.layer.masksToBounds = YES; + _submitButton.layer.cornerRadius = 45/2; + [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_submitButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_submitButton addTarget:self action:@selector(submitButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _submitButton.enabled = NO; + } + return _submitButton; } - (UIButton *)forgetButton { - if (!_forgetButton) { - _forgetButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_forgetButton setEnlargeEdgeWithTop:5 right:5 bottom:5 left:5]; - [_forgetButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; - [_forgetButton setTitle:@"忘记密码?" forState:UIControlStateNormal]; - _forgetButton.titleLabel.font = [UIFont systemFontOfSize:13]; - [_forgetButton addTarget:self action:@selector(forgetButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _forgetButton; + if (!_forgetButton) { + _forgetButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_forgetButton setEnlargeEdgeWithTop:5 right:5 bottom:5 left:5]; + [_forgetButton setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_forgetButton setTitle:YMLocalizedString(@"XPMineLoginPasswordViewController11") forState:UIControlStateNormal]; + _forgetButton.titleLabel.font = [UIFont systemFontOfSize:13]; + [_forgetButton addTarget:self action:@selector(forgetButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _forgetButton; } - (UILabel *)limitLabel { - if (!_limitLabel) { - _limitLabel = [[UILabel alloc] init]; - _limitLabel.font = [UIFont systemFontOfSize:13]; - _limitLabel.textColor = [DJDKMIMOMColor secondTextColor]; - _limitLabel.text = @"密码必须使用6-16个字符内的数字和英文字母组合哦!"; - } - return _limitLabel; + if (!_limitLabel) { + _limitLabel = [[UILabel alloc] init]; + _limitLabel.font = [UIFont systemFontOfSize:13]; + _limitLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _limitLabel.text = YMLocalizedString(@"XPMineLoginPasswordViewController12"); + _limitLabel.numberOfLines = 0; + } + return _limitLabel; } @end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.m index 4eac4411..9d37492d 100644 --- a/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.m +++ b/YuMi/Modules/YMMine/View/Setting/XPMineModifPayPwdViewController.m @@ -1,8 +1,8 @@ // -// YMMineModifPayPwdViewController.m -// YUMI +// XPMineModifPayPwdViewController.m +// xplan-ios // -// Created by YUMI on 2021/9/18. +// Created by 冯硕 on 2021/9/18. // #import "XPMineModifPayPwdViewController.h" @@ -10,7 +10,7 @@ #import #import ///Tool -#import "DJDKMIMOMColor.h" + #import "UIButton+EnlargeTouchArea.h" #import "UIImage+Utils.h" ///View @@ -40,159 +40,174 @@ @implementation XPMineModifPayPwdViewController - (XPMineModifPayPwdPresenter *)createPresenter { - return [[XPMineModifPayPwdPresenter alloc] init]; + return [[XPMineModifPayPwdPresenter alloc] init]; } - (void)viewDidLoad { [super viewDidLoad]; - [self initSubViews]; - [self initSubViewConstraints]; - [self initEvents]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; } #pragma mark - Private Method - (void)initSubViews { - self.title = YMLocalizedString(@"XPMineModifPayPwdViewController0"); - [self.view addSubview:self.stackView]; - [self.view addSubview:self.forgetBtn]; - [self.view addSubview:self.submitBtn]; - [self.stackView addArrangedSubview:self.currentPwdView]; - [self.stackView addArrangedSubview:self.newsPwdView]; - [self.stackView addArrangedSubview:self.checkPwdView]; + self.view.backgroundColor = [UIColor whiteColor]; + self.title = YMLocalizedString(@"XPMineModifPayPwdViewController0"); + [self.view addSubview:self.stackView]; + [self.view addSubview:self.forgetBtn]; + [self.view addSubview:self.submitBtn]; + [self.stackView addArrangedSubview:self.currentPwdView]; + [self.stackView addArrangedSubview:self.newsPwdView]; + [self.stackView addArrangedSubview:self.checkPwdView]; } - (void)initSubViewConstraints { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - }]; - - [self.forgetBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.view).offset(-32); - make.top.mas_equalTo(self.stackView.mas_bottom).offset(8); - }]; - [self.submitBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); - make.right.mas_equalTo(self.view).offset(-32); - make.left.mas_equalTo(self.view).offset(32); - make.height.mas_equalTo(45); - }]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(30); + make.leading.trailing.mas_equalTo(self.view); + }]; + + [self.forgetBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(self.view).offset(-32); + make.top.mas_equalTo(self.stackView.mas_bottom).offset(8); + }]; + [self.submitBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(275); + make.trailing.mas_equalTo(self.view).offset(-15); + make.leading.mas_equalTo(self.view).offset(15); + make.height.mas_equalTo(46); + }]; } - (void)initEvents { - RAC(self.submitBtn, enabled) = [RACSignal combineLatest:@[self.currentPwdView.contentTextField.rac_textSignal, self.newsPwdView.contentTextField.rac_textSignal, self.checkPwdView.contentTextField.rac_textSignal] reduce:^id _Nonnull(NSString *currentPassword, NSString *newsPassword, NSString *checkPassword){ - return @(currentPassword.length == 6 && newsPassword.length == 6 && checkPassword.length == 6); - }]; + RAC(self.submitBtn, enabled) = [RACSignal combineLatest:@[self.currentPwdView.contentTextField.rac_textSignal, self.newsPwdView.contentTextField.rac_textSignal, self.checkPwdView.contentTextField.rac_textSignal] reduce:^id _Nonnull(NSString *currentPassword, NSString *newsPassword, NSString *checkPassword){ + return @(currentPassword.length == 6 && newsPassword.length == 6 && checkPassword.length == 6); + }]; } ///判断一个字符串是纯数字 - (BOOL)isPureNum:(NSString *)text { - if (!text) { - return NO; - } - NSScanner *scan = [NSScanner scannerWithString:text]; - int val; - return [scan scanInt:&val] && [scan isAtEnd]; + if (!text) { + return NO; + } + NSScanner *scan = [NSScanner scannerWithString:text]; + int val; + return [scan scanInt:&val] && [scan isAtEnd]; } #pragma mark - XPMineModifPayProtocol - (void)modifPayPasswordSuccess { - [self showSuccessToast:YMLocalizedString(@"XPMineModifPayPwdViewController1")]; - for (UIViewController *VC in self.navigationController.viewControllers) { - if ([VC isKindOfClass:[XPMineSettingViewController class]]) { - [self.navigationController popToViewController:VC animated:YES]; - return; - } - } - [self.navigationController popViewControllerAnimated:YES]; + [self showSuccessToast:YMLocalizedString(@"XPMineModifPayPwdViewController1")]; + for (UIViewController *VC in self.navigationController.viewControllers) { + if ([VC isKindOfClass:[XPMineSettingViewController class]]) { + [self.navigationController popToViewController:VC animated:YES]; + return; + } + } + [self.navigationController popViewControllerAnimated:YES]; } #pragma mark - Event Response - (void)forgetBtnAction:(UIButton *)sender { - XPMineVerifIdentityViewController * VC= [[XPMineVerifIdentityViewController alloc] init]; - VC.userInfo = self.userInfo; - [self.navigationController pushViewController:VC animated:YES]; + + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"PKIDLoginViewController2"); + config.message = YMLocalizedString(@"PKIDLoginViewController3"); + config.actionStyle = TTAlertActionConfirmStyle; + config.confirmButtonConfig.title = YMLocalizedString(@"PKIDLoginViewController4"); + [TTPopup alertWithConfig:config confirmHandler:^{ + + } cancelHandler:^{ + + }]; + + return; + XPMineVerifIdentityViewController * VC= [[XPMineVerifIdentityViewController alloc] init]; + VC.userInfo = self.userInfo; + [self.navigationController pushViewController:VC animated:YES]; } - (void)submitBtnAction:(UIButton *)sender { - if (![self.newsPwdView.contentTextField.text isEqual:self.checkPwdView.contentTextField.text]) { - [self showErrorToast:YMLocalizedString(@"XPMineModifPayPwdViewController2")]; - return; - } - - if (![self isPureNum:self.checkPwdView.contentTextField.text] || ![self isPureNum:self.newsPwdView.contentTextField.text]) { - [self showErrorToast:YMLocalizedString(@"XPMineModifPayPwdViewController3")]; - return; - } - - [self.presenter modifyPaymentPasswordWitholdPassword:self.currentPwdView.contentTextField.text newPassword:self.newsPwdView.contentTextField.text]; + if (![self.newsPwdView.contentTextField.text isEqual:self.checkPwdView.contentTextField.text]) { + [self showErrorToast:YMLocalizedString(@"XPMineModifPayPwdViewController2")]; + return; + } + + if (![self isPureNum:self.checkPwdView.contentTextField.text] || ![self isPureNum:self.newsPwdView.contentTextField.text]) { + [self showErrorToast:YMLocalizedString(@"XPMineModifPayPwdViewController3")]; + return; + } + + [self.presenter modifyPaymentPasswordWitholdPassword:self.currentPwdView.contentTextField.text newPassword:self.newsPwdView.contentTextField.text]; } #pragma mark - Getters And Setters - (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 25; + } + return _stackView; } - (XPMineModifPayPwdView *)currentPwdView { - if (!_currentPwdView) { - _currentPwdView = [[XPMineModifPayPwdView alloc] init]; - _currentPwdView.placeholder = YMLocalizedString(@"XPMineModifPayPwdViewController4"); - _currentPwdView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; - } - return _currentPwdView; + if (!_currentPwdView) { + _currentPwdView = [[XPMineModifPayPwdView alloc] init]; + _currentPwdView.placeholder = YMLocalizedString(@"XPMineModifPayPwdViewController4"); + _currentPwdView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _currentPwdView; } - (XPMineModifPayPwdView *)newsPwdView { - if (!_newsPwdView) { - _newsPwdView = [[XPMineModifPayPwdView alloc] init]; - _newsPwdView.placeholder = YMLocalizedString(@"XPMineModifPayPwdViewController5"); - _newsPwdView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; - } - return _newsPwdView; + if (!_newsPwdView) { + _newsPwdView = [[XPMineModifPayPwdView alloc] init]; + _newsPwdView.placeholder = YMLocalizedString(@"XPMineModifPayPwdViewController5"); + _newsPwdView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _newsPwdView; } - (XPMineModifPayPwdView *)checkPwdView { - if (!_checkPwdView) { - _checkPwdView = [[XPMineModifPayPwdView alloc] init]; - _checkPwdView.placeholder = YMLocalizedString(@"XPMineModifPayPwdViewController6"); - _checkPwdView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; - } - return _checkPwdView; + if (!_checkPwdView) { + _checkPwdView = [[XPMineModifPayPwdView alloc] init]; + _checkPwdView.placeholder = YMLocalizedString(@"XPMineModifPayPwdViewController6"); + _checkPwdView.contentTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _checkPwdView; } - (UIButton *)submitBtn { - if (!_submitBtn) { - _submitBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_submitBtn setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; - [_submitBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; - [_submitBtn setTitle:YMLocalizedString(@"XPMineModifPayPwdViewController7") forState:UIControlStateNormal]; - _submitBtn.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _submitBtn.layer.masksToBounds = YES; - _submitBtn.layer.cornerRadius = 45/2; - _submitBtn.enabled = YES; - [_submitBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_submitBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_submitBtn addTarget:self action:@selector(submitBtnAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _submitBtn; + if (!_submitBtn) { + _submitBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_submitBtn setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_submitBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_submitBtn setTitle:YMLocalizedString(@"XPMineModifPayPwdViewController7") forState:UIControlStateNormal]; + _submitBtn.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightRegular]; + _submitBtn.layer.masksToBounds = YES; + _submitBtn.layer.cornerRadius = 45/2; + _submitBtn.enabled = YES; + [_submitBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_submitBtn setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_submitBtn addTarget:self action:@selector(submitBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _submitBtn; } - (UIButton *)forgetBtn { - if (!_forgetBtn) { - _forgetBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_forgetBtn setEnlargeEdgeWithTop:5 right:5 bottom:5 left:5]; - [_forgetBtn setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; - [_forgetBtn setTitle:@"忘记密码?" forState:UIControlStateNormal]; - _forgetBtn.titleLabel.font = [UIFont systemFontOfSize:13]; - [_forgetBtn addTarget:self action:@selector(forgetBtnAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _forgetBtn; + if (!_forgetBtn) { + _forgetBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_forgetBtn setEnlargeEdgeWithTop:5 right:5 bottom:5 left:5]; + [_forgetBtn setTitleColor:[DJDKMIMOMColor secondTextColor] forState:UIControlStateNormal]; + [_forgetBtn setTitle:YMLocalizedString(@"XPMineModifPayPwdViewController8") forState:UIControlStateNormal]; + _forgetBtn.titleLabel.font = [UIFont systemFontOfSize:13]; + [_forgetBtn addTarget:self action:@selector(forgetBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _forgetBtn; } @end diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.h b/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.h index 4795dbcb..1ba9063c 100644 --- a/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.h +++ b/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.h @@ -1,8 +1,8 @@ // -// YMMineVerifIdentityViewController.h -// YUMI +// XPMineVerifIdentityViewController.h +// xplan-ios // -// Created by YUMI on 2021/9/18. +// Created by 冯硕 on 2021/9/18. // 验证身份 #import "MvpViewController.h" diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.m index f3912c0f..65a61509 100644 --- a/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.m +++ b/YuMi/Modules/YMMine/View/Setting/XPMineVerifIdentityViewController.m @@ -1,8 +1,8 @@ // -// YMMineVerifIdentityViewController.m -// YUMI +// XPMineVerifIdentityViewController.m +// xplan-ios // -// Created by YUMI on 2021/9/18. +// Created by 冯硕 on 2021/9/18. // #import "XPMineVerifIdentityViewController.h" @@ -10,7 +10,7 @@ #import #import ///Tool -#import "DJDKMIMOMColor.h" + #import "CountDownHelper.h" #import "UIImage+Utils.h" ///Model @@ -36,77 +36,77 @@ @implementation XPMineVerifIdentityViewController - (void)dealloc { - [[CountDownHelper shareHelper] stopCountDown]; + [[CountDownHelper shareHelper] stopCountDown]; } - (XPMineVerifIdentityPresenter *)createPresenter { - return [[XPMineVerifIdentityPresenter alloc] init];; + return [[XPMineVerifIdentityPresenter alloc] init];; } - (void)viewDidLoad { [super viewDidLoad]; - [self initSubViews]; - [self initSubViewConstraints]; - [self initEvents]; + [self initSubViews]; + [self initSubViewConstraints]; + [self initEvents]; } - (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - [[CountDownHelper shareHelper] stopCountDown]; + [super viewDidDisappear:animated]; + [[CountDownHelper shareHelper] stopCountDown]; } #pragma mark - Private Method - (void)initSubViews { - self.title = YMLocalizedString(@"XPMineVerifIdentityViewController0"); - self.phoneView.contentTextField.text = self.userInfo.phone; - self.phoneView.contentTextField.enabled = self.userInfo.phone.length > 0; - [CountDownHelper shareHelper].delegate = self; - [self.view addSubview:self.stackView]; - [self.view addSubview:self.nextButton]; - - [self.stackView addArrangedSubview:self.phoneView]; - [self.stackView addArrangedSubview:self.smsCodeView]; + self.title = YMLocalizedString(@"XPMineVerifIdentityViewController0"); + self.phoneView.contentTextField.text = self.userInfo.phone; + self.phoneView.contentTextField.enabled = self.userInfo.phone.length > 0; + [CountDownHelper shareHelper].delegate = self; + [self.view addSubview:self.stackView]; + [self.view addSubview:self.nextButton]; + + [self.stackView addArrangedSubview:self.phoneView]; + [self.stackView addArrangedSubview:self.smsCodeView]; } - (void)initSubViewConstraints { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.top.mas_equalTo(self.view); - }]; - - [self.nextButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); - make.right.mas_equalTo(self.view).offset(-32); - make.left.mas_equalTo(self.view).offset(32); - make.height.mas_equalTo(45); - }]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self.view); + }]; + + [self.nextButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.stackView.mas_bottom).offset(45); + make.trailing.mas_equalTo(self.view).offset(-32); + make.leading.mas_equalTo(self.view).offset(32); + make.height.mas_equalTo(45); + }]; } - (void)initEvents { - @weakify(self); - RAC(self.nextButton, enabled) = [RACSignal combineLatest:@[self.phoneView.contentTextField.rac_textSignal, self.smsCodeView.contentTextField.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString * code){ - return @(phone.length > 0 && code.length > 0); - }]; - - self.smsCodeView.smsCodeBlock = ^(UIButton * _Nonnull sender) { - @strongify(self); - if (self.phoneView.contentTextField.text.length > 0) { - [self.presenter phoneSmsCode:self.phoneView.contentTextField.text type:GetSmsType_Unbind_Phone phoneAreaCode:@""]; - } else { - [self showErrorToast:YMLocalizedString(@"XPMineVerifIdentityViewController1")]; - } - }; + @weakify(self); + RAC(self.nextButton, enabled) = [RACSignal combineLatest:@[self.phoneView.contentTextField.rac_textSignal, self.smsCodeView.contentTextField.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString * code){ + return @(phone.length > 0 && code.length > 0); + }]; + + self.smsCodeView.smsCodeBlock = ^(UIButton * _Nonnull sender) { + @strongify(self); + if (self.phoneView.contentTextField.text.length > 0) { + [self.presenter phoneSmsCode:self.phoneView.contentTextField.text type:GetSmsType_Unbind_Phone phoneAreaCode:@""]; + } else { + [self showErrorToast:YMLocalizedString(@"XPMineVerifIdentityViewController1")]; + } + }; } #pragma mark - XPMineVerifIdentityProtocol - (void)phoneSmsCodeSuccess { - self.smsCodeView.smsCodeButton.enabled = NO; - [self showSuccessToast:YMLocalizedString(@"XPMineVerifIdentityViewController2")]; - [[CountDownHelper shareHelper] openCountdownWithTime:60]; + self.smsCodeView.smsCodeButton.enabled = NO; + [self showSuccessToast:YMLocalizedString(@"XPMineVerifIdentityViewController2")]; + [[CountDownHelper shareHelper] openCountdownWithTime:60]; } - (void)checkMoblieCodeWithMoblieSuccess { - [self showErrorToast:YMLocalizedString(@"XPMineVerifIdentityViewController3")]; - [[CountDownHelper shareHelper] stopCountDown]; - XPMineResetPayPwdViewController * vc = [[XPMineResetPayPwdViewController alloc] init]; - [self.navigationController pushViewController:vc animated:YES]; + [self showErrorToast:YMLocalizedString(@"XPMineVerifIdentityViewController3")]; + [[CountDownHelper shareHelper] stopCountDown]; + XPMineResetPayPwdViewController * vc = [[XPMineResetPayPwdViewController alloc] init]; + [self.navigationController pushViewController:vc animated:YES]; } #pragma mark - CountDownHelperDelegate @@ -122,56 +122,56 @@ #pragma mark - Event Response - (void)nextButtonAction:(UIButton *)sender { - [self.presenter checkMoblieCodeWithMoblie:self.phoneView.contentTextField.text code:self.smsCodeView.contentTextField.text]; + [self.presenter checkMoblieCodeWithMoblie:self.phoneView.contentTextField.text code:self.smsCodeView.contentTextField.text phoneAreaCode:@""]; } #pragma mark - Getters And Setters - (UIButton *)nextButton { - if (!_nextButton) { - _nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_nextButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; - [_nextButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; - [_nextButton setTitle:YMLocalizedString(@"XPMineVerifIdentityViewController6") forState:UIControlStateNormal]; - _nextButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - _nextButton.layer.masksToBounds = YES; - _nextButton.layer.cornerRadius = 45/2; - _nextButton.enabled = NO; - [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; - [_nextButton addTarget:self action:@selector(nextButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _nextButton; + if (!_nextButton) { + _nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_nextButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + [_nextButton setTitleColor:[DJDKMIMOMColor disableButtonTextColor] forState:UIControlStateDisabled]; + [_nextButton setTitle:YMLocalizedString(@"XPMineVerifIdentityViewController6") forState:UIControlStateNormal]; + _nextButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; + _nextButton.layer.masksToBounds = YES; + _nextButton.layer.cornerRadius = 45/2; + _nextButton.enabled = NO; + [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; + [_nextButton addTarget:self action:@selector(nextButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _nextButton; } - (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisVertical; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 0; - } - return _stackView; + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; } - (XPMineVerifIdentityView *)phoneView { - if (!_phoneView) { - _phoneView = [[XPMineVerifIdentityView alloc] init]; - _phoneView.type = XPMineVerifIdentityType_Phone; - _phoneView.placeholder = YMLocalizedString(@"XPMineVerifIdentityViewController7"); - _phoneView.contentTextField.secureTextEntry = NO; - } - return _phoneView; + if (!_phoneView) { + _phoneView = [[XPMineVerifIdentityView alloc] init]; + _phoneView.type = XPMineVerifIdentityType_Phone; + _phoneView.placeholder = YMLocalizedString(@"XPMineVerifIdentityViewController7"); + _phoneView.contentTextField.secureTextEntry = NO; + } + return _phoneView; } - (XPMineVerifIdentityView *)smsCodeView { - if (!_smsCodeView) { - _smsCodeView = [[XPMineVerifIdentityView alloc] init]; - _smsCodeView.type = XPMineVerifIdentityType_Sms; - _smsCodeView.placeholder = YMLocalizedString(@"XPMineVerifIdentityViewController8"); - _smsCodeView.contentTextField.secureTextEntry = NO; - } - return _smsCodeView; + if (!_smsCodeView) { + _smsCodeView = [[XPMineVerifIdentityView alloc] init]; + _smsCodeView.type = XPMineVerifIdentityType_Sms; + _smsCodeView.placeholder = YMLocalizedString(@"XPMineVerifIdentityViewController8"); + _smsCodeView.contentTextField.secureTextEntry = NO; + } + return _smsCodeView; } @end diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.m b/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.m index cb3e5fbf..9a692dfc 100644 --- a/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.m +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineModifPayPwdView.m @@ -1,15 +1,15 @@ // -// YMMineModifPayPwdView.m -// YUMI +// XPMineModifPayPwdView.m +// xplan-ios // -// Created by YUMI on 2021/9/18. +// Created by 冯硕 on 2021/9/18. // #import "XPMineModifPayPwdView.h" ///Third #import ///Tool -#import "DJDKMIMOMColor.h" + #import "UIButton+EnlargeTouchArea.h" @interface XPMineModifPayPwdView () @@ -17,97 +17,102 @@ @property (nonatomic,strong) UITextField *contentTextField; ///控制显示或者隐藏 @property (nonatomic,strong) UIButton *commandButton; -///分割线 -@property (nonatomic,strong) UIView * partLineView; +///背景 +@property (nonatomic,strong) UIView * bgView; @end @implementation XPMineModifPayPwdView - (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; } #pragma mark - Response - (void)onClickHiddenBtn:(UIButton *)btn { - btn.selected = !btn.selected; - self.contentTextField.secureTextEntry = !self.contentTextField.secureTextEntry; + btn.selected = !btn.selected; + self.contentTextField.secureTextEntry = !self.contentTextField.secureTextEntry; } #pragma mark - Private Method - (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; - [self addSubview:self.contentTextField]; - [self addSubview:self.commandButton]; - [self addSubview:self.partLineView]; + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.bgView]; + [self.bgView addSubview:self.contentTextField]; + [self.bgView addSubview:self.commandButton]; + } - (void)initSubViewConstraints { - [self mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(50); - }]; - - [self.contentTextField mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.top.bottom.mas_equalTo(self); - }]; - - [self.commandButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self).offset(-32); - make.centerY.mas_equalTo(self.contentTextField); - make.left.mas_equalTo(self.contentTextField.mas_right).offset(10); - }]; - - [self.partLineView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(5); - make.right.mas_equalTo(self).offset(-5); - make.bottom.mas_equalTo(self); - make.height.mas_equalTo(0.5); - }]; + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(48); + }]; + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.equalTo(self); + make.leading.mas_offset(15); + make.trailing.mas_equalTo(-15); + }]; + [self.contentTextField mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(20); + make.trailing.mas_equalTo(-54); + make.top.bottom.mas_equalTo(self.bgView); + }]; + + [self.commandButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-20); + make.width.height.mas_equalTo(24); + make.centerY.mas_equalTo(self.contentTextField); + make.leading.mas_equalTo(self.contentTextField.mas_trailing).offset(10); + }]; + + } #pragma mark - Getters And Setters - (void)setPlaceholder:(NSString *)placeholder { - _placeholder = placeholder; - self.contentTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : self.contentTextField.font, NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; + _placeholder = placeholder; + NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init]; + self.contentTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholder attributes:@{NSFontAttributeName : self.contentTextField.font, NSForegroundColorAttributeName : [DJDKMIMOMColor disableButtonTextColor], NSParagraphStyleAttributeName: style}]; } -- (UIView *)partLineView { - if (!_partLineView) { - _partLineView = [[UIView alloc] init]; - _partLineView.backgroundColor = [DJDKMIMOMColor dividerColor]; - } - return _partLineView; +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = UIColorFromRGB(0xF0F5F6); + _bgView.layer.cornerRadius = 24; + _bgView.layer.masksToBounds = YES; + } + return _bgView; } - (UITextField *)contentTextField { - if (!_contentTextField) { - _contentTextField = [[UITextField alloc] init]; - _contentTextField.secureTextEntry = YES; - _contentTextField.font = [UIFont systemFontOfSize:13]; - _contentTextField.textColor = [DJDKMIMOMColor mainTextColor]; - _contentTextField.tintColor = [DJDKMIMOMColor appMainColor]; - } - return _contentTextField; + if (!_contentTextField) { + _contentTextField = [[UITextField alloc] init]; + _contentTextField.secureTextEntry = YES; + _contentTextField.font = [UIFont systemFontOfSize:15]; + _contentTextField.textColor = [DJDKMIMOMColor inputTextColor]; + _contentTextField.tintColor = [DJDKMIMOMColor appMainColor]; + } + return _contentTextField; } - (UIButton *)commandButton { - if (!_commandButton) { - _commandButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_commandButton setEnlargeEdgeWithTop:20 right:20 bottom:20 left:20]; - [_commandButton addTarget:self action:@selector(onClickHiddenBtn:) forControlEvents:UIControlEventTouchUpInside]; - [_commandButton setImage:[UIImage imageNamed:@"mine_setting_modif_pay_pwd_hidden"] forState:UIControlStateNormal]; - [_commandButton setImage:[UIImage imageNamed:@"mine_setting_modif_pay_pwd_show"] forState:UIControlStateSelected]; - _commandButton.titleLabel.font = [UIFont systemFontOfSize:12]; - [_commandButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _commandButton; + if (!_commandButton) { + _commandButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_commandButton setEnlargeEdgeWithTop:20 right:20 bottom:20 left:20]; + [_commandButton addTarget:self action:@selector(onClickHiddenBtn:) forControlEvents:UIControlEventTouchUpInside]; + [_commandButton setImage:[UIImage imageNamed:@"mine_setting_modif_pay_pwd_hidden"] forState:UIControlStateNormal]; + [_commandButton setImage:[UIImage imageNamed:@"mine_setting_modif_pay_pwd_show"] forState:UIControlStateSelected]; + _commandButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_commandButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + } + return _commandButton; } diff --git a/YuMi/Modules/YMMine/View/XPMineViewController.m b/YuMi/Modules/YMMine/View/XPMineViewController.m index 2b90f5f1..046df1f8 100644 --- a/YuMi/Modules/YMMine/View/XPMineViewController.m +++ b/YuMi/Modules/YMMine/View/XPMineViewController.m @@ -627,6 +627,7 @@ UIKIT_EXTERN NSString *kRequestRicket; _tableView.delegate = self; _tableView.dataSource = self; _tableView.showsVerticalScrollIndicator = NO; + _tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;; [_tableView registerClass:[XPMineTheGuildCell class] forCellReuseIdentifier:NSStringFromClass([XPMineTheGuildCell class])]; [_tableView registerClass:[XPMinePersonalCenterCell class] forCellReuseIdentifier:NSStringFromClass([XPMinePersonalCenterCell class])]; diff --git a/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.m index e8d856e2..65be828a 100644 --- a/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.m +++ b/YuMi/Modules/YMMonents/View/XPMonentsAttentionViewController.m @@ -260,6 +260,7 @@ _tableView.delegate = self; _tableView.dataSource = self; _tableView.tableFooterView = [UIView new]; + _tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; _tableView.backgroundColor = [UIColor clearColor]; if (@available(iOS 11.0, *)) { diff --git a/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.m index 3deb52da..a914c7ec 100644 --- a/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.m +++ b/YuMi/Modules/YMMonents/View/XPMonentsLatestViewController.m @@ -266,6 +266,7 @@ _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; _tableView.delegate = self; _tableView.dataSource = self; + _tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); _tableView.tableFooterView = [UIView new]; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; _tableView.backgroundColor = [UIColor clearColor]; diff --git a/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.m b/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.m index 89d761ff..3699fc15 100644 --- a/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.m +++ b/YuMi/Modules/YMMonents/View/XPMonentsRecommendViewController.m @@ -280,6 +280,7 @@ _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; _tableView.delegate = self; _tableView.dataSource = self; + _tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); _tableView.tableFooterView = [UIView new]; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; _tableView.backgroundColor = [UIColor clearColor]; diff --git a/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m index c8f83c9d..f5bb1422 100644 --- a/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m @@ -205,6 +205,7 @@ _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; _tableView.delegate = self; _tableView.dataSource = self; + _tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); UIView *headView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, 18)]; _tableView.tableHeaderView = headView; _tableView.tableFooterView = [UIView new]; diff --git a/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.m b/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.m index 061637f0..10606ff5 100644 --- a/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPHomeRecommendViewController.m @@ -426,6 +426,7 @@ UIKIT_EXTERN NSString * const kShieldingNotification; _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; _tableView.delegate = self; _tableView.dataSource = self; + _tableView.contentInset = UIEdgeInsetsMake(0, 0, 100, 0); _tableView.tableFooterView = [UIView new]; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; _tableView.backgroundColor = [UIColor clearColor]; diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m index 7827beac..fe17a8d0 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m @@ -1280,7 +1280,7 @@ GiftReceiveInfoModel *giftNotifyInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; ///年度飘屏是广播 在tabbar中监听 if (giftNotifyInfo.ceremonyGift)return; - if(giftNotifyInfo.isHomeShow == YES)return; ///房间外飘屏 在tabbar中监听 +// if(giftNotifyInfo.isHomeShow == YES)return; ///房间外飘屏 在tabbar中监听 if(giftNotifyInfo.roomUid == self.delegate.getRoomInfo.uid)return; ///自己的房间跨房间飘屏不用走 if (self.animationListA.count == 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { [self createGiftBroadcastViewAnimation:giftNotifyInfo]; @@ -1364,7 +1364,7 @@ #pragma mark - 福袋中 四级奖品 - (void)receiveLuckyGiftBigPrize:(AttachmentModel *)attachment { if ([self isInSudGame]) {return;} - if (attachment.second == Custom_Message_Sub_Room_Gift_LuckBag || attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_Server) { + PIBaseAnimationViewModel * prizeModel = [PIBaseAnimationViewModel modelWithDictionary:attachment.data]; prizeModel.type = GiftBannerType_Lucky; prizeModel.isInRoomVisiable = attachment.second == Custom_Message_Sub_Room_Gift_LuckBag; @@ -1374,7 +1374,7 @@ } [self.animationListB addObject:prizeModel]; - } + } @@ -1668,6 +1668,38 @@ make.height.mas_equalTo(KScreenHeight); }]; } + NSString *baseFileName = @"/GiftSvga"; + NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:baseFileName] stringByAppendingPathComponent:vggUrl]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + if ([fileManager fileExistsAtPath:filePath]){ + NSData *data=[NSData dataWithContentsOfFile:filePath options:0 error:NULL]; + [self.parser parseWithData:data cacheKey:nil completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + if (videoItem != nil) { + CGFloat width = videoItem.videoSize.width; + CGFloat height = videoItem.videoSize.height; + if (width > height) { + self.giftEffectView.contentMode = UIViewContentModeScaleAspectFit; + } else {//高大于宽 + CGFloat resizeH = KScreenWidth * height / width;//按照屏幕的宽度去缩放,获得高度 + if (resizeH > KScreenHeight) {//如果大于屏幕高度,填充 + self.giftEffectView.contentMode = UIViewContentModeScaleAspectFill; + } else {//小于屏幕高度, + self.giftEffectView.contentMode = UIViewContentModeScaleAspectFit; + } + } + self.giftEffectView.alpha = 1; + self.giftEffectView.loops = 1; + self.giftEffectView.clearsAfterStop = YES; + self.giftEffectView.videoItem = videoItem; + [self.giftEffectView startAnimation]; + } + } failureBlock:^(NSError * _Nonnull error) { + self.giftEffectView.hidden = YES; + }]; + return; + + }; + [self.parser parseWithURL:[NSURL URLWithString:vggUrl] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { if (videoItem != nil) { CGFloat width = videoItem.videoSize.width; @@ -1704,6 +1736,12 @@ make.height.mas_equalTo(KScreenHeight); }]; } + NSString *baseFileName = @"/GiftMp4"; + NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:baseFileName] stringByAppendingPathComponent:vapUrl]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + if ([fileManager fileExistsAtPath:filePath]){ + vapUrl = filePath; + } [self.vapParser parseWithURL:vapUrl completionBlock:^(NSString * _Nullable videoUrl) { if (videoUrl.length) { [self.vapGiftEffectView setMute:YES]; @@ -1726,6 +1764,40 @@ make.height.mas_equalTo(KScreenHeight); }]; } + + NSString *baseFileName = @"/GiftSvga"; + NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:baseFileName] stringByAppendingPathComponent:vggUrl.absoluteString]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + if ([fileManager fileExistsAtPath:filePath]){ + NSData *data=[NSData dataWithContentsOfFile:filePath options:0 error:NULL]; + [self.parser parseWithData:data cacheKey:@"" completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + if (videoItem != nil) { + CGFloat width = videoItem.videoSize.width; + CGFloat height = videoItem.videoSize.height; + if (width > height) { + self.luckyGiftEffectView.contentMode = UIViewContentModeScaleAspectFit; + } else {//高大于宽 + CGFloat resizeH = KScreenWidth * height / width;//按照屏幕的宽度去缩放,获得高度 + if (resizeH > KScreenHeight) {//如果大于屏幕高度,填充 + self.luckyGiftEffectView.contentMode = UIViewContentModeScaleAspectFill; + } else {//小于屏幕高度, + self.luckyGiftEffectView.contentMode = UIViewContentModeScaleAspectFit; + } + } + self.luckyGiftEffectView.alpha = 1; + self.luckyGiftEffectView.loops = 1; + self.luckyGiftEffectView.clearsAfterStop = YES; + self.luckyGiftEffectView.videoItem = videoItem; + [self.luckyGiftEffectView startAnimation]; + } + } failureBlock:^(NSError * _Nonnull error) { + self.luckyGiftEffectView.hidden = YES; + }]; + return; + + }; + + [self.parser parseWithURL:vggUrl completionBlock:^(SVGAVideoEntity * _Nullable videoItem) { if (videoItem != nil) { CGFloat width = videoItem.videoSize.width; @@ -1762,6 +1834,12 @@ make.height.mas_equalTo(KScreenHeight); }]; } + NSString *baseFileName = @"/GiftMp4"; + NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:baseFileName] stringByAppendingPathComponent:vapUrl]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + if ([fileManager fileExistsAtPath:filePath]){ + vapUrl = filePath; + } [self.vapParser parseWithURL:vapUrl completionBlock:^(NSString * _Nullable videoUrl) { if (videoUrl.length) { [self.luckyVapGiftEffectView setMute:YES]; diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.m index ecde8423..263a0937 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomCandyGiftView.m @@ -1,28 +1,26 @@ // -// YMRoomCandyGiftView.m -// YUMI +// XPRoomCandyGiftView.m +// xplan-ios // -// Created by YUMI on 2021/12/10. +// Created by 冯硕 on 2021/12/10. // #import "XPRoomCandyGiftView.h" ///Third #import #import -#import "XPSVGAPlayer.h" -#import "YUMIMacroUitls.h" #import "ThemeColor+Room.h" #import "CandyTreeResultModel.h" #import "NSObject+MJExtension.h" + + @interface XPRoomCandyGiftView () ///动画管理类 @property (strong, nonatomic) SVGAParser *parser; ///糖果树特效 -@property (nonatomic,strong) XPSVGAPlayer *candyTreeView; +@property (nonatomic,strong) SVGAImageView *candyTreeView; ///背景图 @property (nonatomic,strong) UIImageView *backImageView; -///容器 -@property (nonatomic,strong) UIView *titleView; ///显示文本内容 @property (nonatomic,strong) UILabel *titleLabel; @end @@ -30,134 +28,116 @@ @implementation XPRoomCandyGiftView - (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; } #pragma mark - Private Method - (void)initSubViews { - [self addSubview:self.candyTreeView]; - [self addSubview:self.backImageView]; - [self.backImageView addSubview:self.titleView]; - - [self.titleView addSubview:self.titleLabel]; + [self addSubview:self.candyTreeView]; + [self addSubview:self.backImageView]; + [self addSubview:self.titleLabel]; } - (void)initSubViewConstraints { - [self.candyTreeView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - }]; - - [self.titleView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(260); - make.height.mas_equalTo(28); - make.top.mas_equalTo(self.backImageView).offset(23); - make.centerX.mas_equalTo(self.backImageView); - }]; - - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.titleView); - make.centerY.mas_equalTo(self.titleView); - }]; + [self.candyTreeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self); + make.height.mas_equalTo(kGetScaleWidth(55)); + }]; + + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.mas_equalTo(self.candyTreeView); + make.height.mas_equalTo(kGetScaleWidth(55)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.backImageView); + }]; } - (NSAttributedString *)createAttribute:(NSString * )text color:(UIColor *)color fontSize:(CGFloat)fonSize { - NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; - NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; - return attr; + if(text.length == 0)return nil; + NSDictionary * attribute = @{NSFontAttributeName:[UIFont systemFontOfSize:fonSize], NSForegroundColorAttributeName:color}; + NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:text attributes:attribute]; + return attr; } #pragma mark - Getters And Setters - (void)setCandyInfo:(NSDictionary *)candyInfo { - if (candyInfo) { - CandyTreeGiftInfoModel * giftInfo = [CandyTreeGiftInfoModel modelWithDictionary:candyInfo]; - NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - CGFloat fontSize = self.isMaxLargeGift ? 22 : 13; - [attribute appendAttributedString:[self createAttribute:@"厉害了! " color:[UIColor whiteColor] fontSize:fontSize]]; - [attribute appendAttributedString:[self createAttribute:giftInfo.nick color:[DJDKMIMOMColor colorWithHexString:@"#FEF23E"] fontSize:fontSize]]; - [attribute appendAttributedString:[self createAttribute:@"摘下糖果得 " color:[UIColor whiteColor] fontSize:fontSize]]; - [attribute appendAttributedString:[self createAttribute:giftInfo.prizeName color:[DJDKMIMOMColor colorWithHexString:@"#FEF23E"] fontSize:fontSize]]; - if (giftInfo.prizeNum > 1) { - [attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@" X%d", giftInfo.prizeNum] color:[UIColor whiteColor] fontSize:fontSize]]; - } - - NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new]; - paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping; - paragraphStyle.lineSpacing = 4.0f;//行间距 - paragraphStyle.alignment = NSTextAlignmentCenter; - paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight; - [attribute addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, attribute.length)]; - [self.candyTreeView setAttributedText:attribute forKey:@"tgs_copywriting"]; - if (self.isMaxLargeGift) { - self.backImageView.hidden = YES; - self.candyTreeView.hidden = NO; - @kWeakify(self); - NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/candyTree_banner.svga", API_Image_URL]; - [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - self.candyTreeView.loops = 1; - self.candyTreeView.clearsAfterStop = NO; - self.candyTreeView.videoItem = videoItem; - - [self.candyTreeView startAnimation]; - } failureBlock:^(NSError * _Nonnull error) { - - }]; - } else { - self.backImageView.hidden = NO; - self.candyTreeView.hidden = YES; - self.titleLabel.attributedText = attribute; - self.titleLabel.textAlignment = NSTextAlignmentCenter; - } - } + if (candyInfo) { + CandyTreeGiftInfoModel * giftInfo = [CandyTreeGiftInfoModel modelWithDictionary:candyInfo]; + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + + if(giftInfo.nick.length > 5){ + giftInfo.nick = [NSString stringWithFormat:@"%@...",[giftInfo.nick substringToIndex:5]]; + } + CGFloat fontSize = self.isMaxLargeGift ? 20 : 12; + [attribute appendAttributedString:[self createAttribute:YMLocalizedString(@"XPRoomCandyGiftView0") color:[UIColor whiteColor] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:giftInfo.nick color:UIColorFromRGB(0xFEF23E) fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:YMLocalizedString(@"XPRoomCandyGiftView1") color:[UIColor whiteColor] fontSize:fontSize]]; + [attribute appendAttributedString:[self createAttribute:giftInfo.prizeName color:UIColorFromRGB(0x00EAFF) fontSize:fontSize]]; + if (giftInfo.prizeNum > 1) { + [attribute appendAttributedString:[self createAttribute:[NSString stringWithFormat:@" X%d", giftInfo.prizeNum] color:UIColorFromRGB(0x00EAFF) fontSize:fontSize]]; + } + + if (self.isMaxLargeGift) { + self.backImageView.hidden = YES; + self.candyTreeView.hidden = NO; + @kWeakify(self); + NSString * anatomiser1Name = [NSString stringWithFormat:@"%@/candyTree_banner.svga", API_Image_URL]; + [self.parser parseWithURL:[NSURL URLWithString:anatomiser1Name] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { + @kStrongify(self); + self.candyTreeView.loops = 1; + self.candyTreeView.clearsAfterStop = NO; + self.candyTreeView.videoItem = videoItem; + [self.candyTreeView setAttributedText:attribute forKey:@"noble_text_tx"]; + [self.candyTreeView startAnimation]; + } failureBlock:^(NSError * _Nonnull error) { + + }]; + } else { + self.backImageView.hidden = NO; + self.candyTreeView.hidden = YES; + self.titleLabel.attributedText = attribute; + self.titleLabel.textAlignment = NSTextAlignmentCenter; + } + } } -- (XPSVGAPlayer *)candyTreeView { - if (!_candyTreeView) { - _candyTreeView = [[XPSVGAPlayer alloc]init]; - _candyTreeView.backgroundColor = [UIColor clearColor]; - _candyTreeView.userInteractionEnabled = NO; - } - return _candyTreeView; +- (SVGAImageView *)candyTreeView { + if (!_candyTreeView) { + _candyTreeView = [[SVGAImageView alloc]init]; + _candyTreeView.backgroundColor = [UIColor clearColor]; + _candyTreeView.userInteractionEnabled = NO; + } + return _candyTreeView; } - (SVGAParser *)parser { - if (!_parser) { - _parser = [[SVGAParser alloc]init]; - } - return _parser; -} - -- (UIView *)titleView { - if (!_titleView) { - _titleView = [[UIView alloc] init]; - _titleView.backgroundColor = [UIColor clearColor]; - } - return _titleView; + if (!_parser) { + _parser = [[SVGAParser alloc]init]; + } + return _parser; } - (UIImageView *)backImageView { - if (!_backImageView) { - _backImageView = [[UIImageView alloc] init]; - _backImageView.userInteractionEnabled = YES; - _backImageView.image = [UIImage imageNamed:@"room_candytree_large_gift_bg"]; - } - return _backImageView; + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.image = [UIImage imageNamed:@"room_candytree_large_gift_bg"]; + } + return _backImageView; } - (UILabel *)titleLabel { - if (!_titleLabel) { - _titleLabel = [[UILabel alloc] init]; - _titleLabel.numberOfLines = 2; - } - return _titleLabel; + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; } @end diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m index 83dcc18a..e1210caf 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m @@ -796,7 +796,7 @@ #pragma mark - 分享房间 - (XPMessageInfoModel *)createShareOrAttentionRoomAttribute:(AttachmentModel *)attachment sendInfo:(XPMessageRemoteExtModel *)sendInfo uid:(NSString *)uid messageInfo:(XPMessageInfoModel *)messageInfo{ NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; - NSDictionary *data = attachment.data[@"data"]; + NSDictionary *data = attachment.data; NSString *nick = [NSString stringWithFormat:@"%@",data[@"nick"]]; [attribute appendAttributedString:[self createTextAttribute:nick color:[DJDKMIMOMColor messageNickColor] font:kRoomMessageDefalutFont]]; NSString *tipString = @""; diff --git a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m index f9c93485..9895b752 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m +++ b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m @@ -206,7 +206,9 @@ NSString * uid = [AccountInfoStorage instance].getUid; [Api closeRoomGiftValue:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] closeRoomGiftValueSuccess]; - }] uid:uid roomUid:roomUid]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + NSLog(@"%@",msg); + }] uid:uid roomUid:roomUid]; } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.h b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.h index a0826a93..d9de9821 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.h +++ b/YuMi/Modules/YMRoom/View/SendGiftView/Model/XPWeekStarRankUserModel.h @@ -10,7 +10,8 @@ NS_ASSUME_NONNULL_BEGIN @interface XPWeekStarRankUserModel : NSObject - +///0:冠名,1、神豪 +@property(nonatomic,assign) int type; ///头像 @property (nonatomic, copy) NSString *avatar; ///榜单值 diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m index 7c24e2a9..2a3ffc21 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftBarView.m @@ -298,7 +298,8 @@ } - (void)setIsShowFirstRecharge:(BOOL)isShowFirstRecharge { - self.firstRechargeButton.hidden = !isShowFirstRecharge; +// self.firstRechargeButton.hidden = !isShowFirstRecharge; + self.firstRechargeButton.hidden = YES; } - (void)setType:(GiftSegmentType)type { diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.m index bfa19842..cb2177b0 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftHeadTypeView.m @@ -47,6 +47,8 @@ static NSString *kHideGiftViewInteractDot = @"kHideGiftViewInteractDot";//是否 #pragma mark - Private Method - (void)initSubViews { + self.titleArray = [[NSMutableArray alloc]initWithArray:@[YMLocalizedString(@"XPGiftHeadTypeView4")]]; + self.cycleScrollView.imageURLStringsGroup = @[@"room_gift_noble_entrance"]; [self addSubview:self.giftButton]; // [self addSubview:self.devideView]; // [self addSubview:self.interactButton]; @@ -163,10 +165,10 @@ static NSString *kHideGiftViewInteractDot = @"kHideGiftViewInteractDot";//是否 #pragma mark - setter - (void)setIsShowFirstRecharge:(BOOL)isShowFirstRecharge { if (isShowFirstRecharge) { - self.titleArray = [NSMutableArray arrayWithObjects:YMLocalizedString(@"XPGiftHeadTypeView1"), nil]; - self.cycleScrollView.imageURLStringsGroup = @[@"gift_first_recharge_bg"]; - } else { - + [self.titleArray addObject:YMLocalizedString(@"XPGiftHeadTypeView1")]; + NSMutableArray *imageList = [[NSMutableArray alloc]initWithArray:self.cycleScrollView.imageURLStringsGroup]; + [imageList addObject:@"gift_first_recharge_bg"]; + self.cycleScrollView.imageURLStringsGroup = imageList; } } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m index 21a78465..ba059045 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftInfoView.m @@ -40,6 +40,8 @@ static NSString *kSendGiftViewHidePunishNewIcon = @"kSendGiftViewHidePunishNewIc @property (nonatomic,strong) UIButton *luckyGiftButton; ///周星礼物 @property (nonatomic, strong) UIButton *weekStarButton; +///贵族礼物 +@property(nonatomic,strong) UIButton *nobleGiftButton; ///涂鸦礼物 @property (nonatomic,strong) UIButton *graffitiButton; ///惩罚礼物 @@ -107,6 +109,7 @@ static NSString *kSendGiftViewHidePunishNewIcon = @"kSendGiftViewHidePunishNewIc self.graffitiButton.selected = NO; self.anchorButton.selected = NO; self.punishButton.selected = NO; + self.nobleGiftButton.selected = NO; sender.selected = !sender.selected; self.segmentType = sender.tag; } @@ -172,6 +175,7 @@ static NSString *kSendGiftViewHidePunishNewIcon = @"kSendGiftViewHidePunishNewIc [self.segmentStackView addArrangedSubview:self.normalGiftButton]; [self.segmentStackView addArrangedSubview:self.luckyGiftButton]; [self.segmentStackView addArrangedSubview:self.weekStarButton]; + [self.segmentStackView addArrangedSubview:self.nobleGiftButton]; [self.segmentStackView addArrangedSubview:self.anchorButton]; ///礼物 [self.giftStackView addArrangedSubview:self.giftcollectionView]; @@ -358,6 +362,9 @@ static NSString *kSendGiftViewHidePunishNewIcon = @"kSendGiftViewHidePunishNewIc #pragma mark - XPGiftWeekStarCollectionViewCellDelegate - (void)xPGiftWeekStarCollectionViewCell:(XPGiftWeekStarCollectionViewCell *)view didSelectGift:(GiftInfoModel *)giftInfo { [self dealSelectGift:giftInfo]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftInfoView:didClickItem:type:)]) { + [self.delegate xPGiftInfoView:self didClickItem:giftInfo type:self.segmentType]; + } } #pragma mark - Getters And Setters @@ -777,5 +784,17 @@ static NSString *kSendGiftViewHidePunishNewIcon = @"kSendGiftViewHidePunishNewIc return _segmentBgView; } - +- (UIButton *)nobleGiftButton{ + if(!_nobleGiftButton){ + _nobleGiftButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_nobleGiftButton setTitle:YMLocalizedString(@"XPGiftInfoView9") forState:UIControlStateNormal]; + [_nobleGiftButton setTitleColor:[DJDKMIMOMColor giftSegmentSelectTitleColor] forState:UIControlStateSelected]; + [_nobleGiftButton setTitleColor:[DJDKMIMOMColor giftSegmentNormalTitleColor] forState:UIControlStateNormal]; + _nobleGiftButton.titleLabel.font = [UIFont systemFontOfSize:13 weight:UIFontWeightSemibold]; + _nobleGiftButton.tag = GiftSegmentType_Noble; + _nobleGiftButton.selected = NO; + [_nobleGiftButton addTarget:self action:@selector(didClickGiftSegmentAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _nobleGiftButton; +} @end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.m index 54cda75b..ebc7fc37 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftLuckyGiftBroadcastView.m @@ -64,6 +64,7 @@ } [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%@ " , nick] color:[DJDKMIMOMColor colorWithHexString:@"#FFE785"]]]; [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:YMLocalizedString(@"XPGiftLuckyGiftBroadcastCell1"), giftInfo.luckyBagName] color:[UIColor whiteColor]]]; + [attribute addAttributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor colorWithHexString:@"#FFE785"]} range:[attribute.string rangeOfString:giftInfo.luckyBagName]]; [attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%@ " , _giftInfo.giftName] color:[DJDKMIMOMColor colorWithHexString:@"#FFE785"]]]; self.titleLabel.attributedText = attribute; } @@ -154,7 +155,9 @@ if (_records.count > 0) { NSMutableArray * array = [NSMutableArray array]; for (GiftLuckyBroadcastModel * item in _records) { - [array addObject:item.giftName]; + if(item.nick.length > 0){ + [array addObject:item.nick]; + } } if (array.count > 0) { self.cycleScrollView.imageURLStringsGroup = array; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.h index 84b16ab5..96d89011 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.h +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.h @@ -6,9 +6,9 @@ // #import - +#import "GiftInfoModel.h" NS_ASSUME_NONNULL_BEGIN -@class GiftTwelveStarFirstModel, XPGiftTwelveStarBroadcastView; +@class XPGiftTwelveStarBroadcastView; @protocol XPGiftTwelveStarBroadcastViewDelegate @@ -17,11 +17,21 @@ NS_ASSUME_NONNULL_BEGIN @interface XPGiftTwelveStarBroadcastView : UIView -@property (nonatomic, strong) GiftTwelveStarFirstModel *giftInfo; - +@property (nonatomic, strong) GiftInfoModel *giftInfo; +@property (nonatomic,strong) NSMutableArray *records; ///代理 @property (nonatomic,weak) id delegate; @end + + + + + + +@interface XPGiftTwelveStarBroadcastCell : UICollectionViewCell +@property(nonatomic,strong) XPWeekStarRankUserModel *userModel; +@property(nonatomic,strong) UIButton *skipBtn; +@end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m index 57444f7a..bc0580af 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftTwelveStarBroadcastView.m @@ -15,28 +15,14 @@ #import "XPWebViewController.h" #import "YUMIHtmlUrl.h" #import "NetImageView.h" +#import ///Model #import "GiftTwelveStarFirstModel.h" -@interface XPGiftTwelveStarBroadcastView() +@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; +///轮播 +@property (nonatomic, strong) SDCycleScrollView *cycleScrollView; @end @@ -53,196 +39,203 @@ #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; + [self addSubview:self.cycleScrollView]; } - (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); - }]; + [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(10)); + make.right.mas_equalTo(-kGetScaleWidth(10)); + make.top.bottom.mas_equalTo(self); + }]; +} +-(void)setGiftInfo:(GiftInfoModel *)giftInfo{ + _giftInfo = giftInfo; + if (_giftInfo.firstCharmRankUser) { + _giftInfo.firstCharmRankUser.type = 0; + [self.records addObject:_giftInfo.firstCharmRankUser]; + } else { + XPWeekStarRankUserModel *rankModel = [XPWeekStarRankUserModel new]; + rankModel.type = 0; + rankModel.avatar = @"common_empty_avatar"; + rankModel.nick = YMLocalizedString(@"XPGiftWeekStarBroadcastView0"); + [self.records addObject:rankModel]; + } + + if (_giftInfo.firstLevelRankUser) { + _giftInfo.firstLevelRankUser.type = 1; + [self.records addObject:_giftInfo.firstLevelRankUser]; + } else { + XPWeekStarRankUserModel *rankModel = [XPWeekStarRankUserModel new]; + rankModel.type = 1; + rankModel.avatar = @"common_empty_avatar"; + rankModel.nick = YMLocalizedString(@"XPGiftWeekStarBroadcastView0"); + [self.records addObject:rankModel]; + } + if (_records.count > 0) { + NSMutableArray * array = [NSMutableArray array]; + for (XPWeekStarRankUserModel * item in _records) { + [array addObject:item.avatar]; + } + if (array.count > 0) { + self.cycleScrollView.imageURLStringsGroup = array; + [self.cycleScrollView autoScroll]; + } + } } - #pragma mark - action -- (void)playButtonAction:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftTwelveStarBroadcastView:didClickDetail:)]) { - [self.delegate xPGiftTwelveStarBroadcastView:self didClickDetail:sender]; - } +-(void)skipBtnAction:(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:YMLocalizedString(@"XPGiftTwelveStarBroadcastView0"), 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; - } +#pragma mark - SDCycleScrollViewDelegate +- (Class)customCollectionViewCellClassForCycleScrollView:(SDCycleScrollView *)view { + return XPGiftTwelveStarBroadcastCell.class; } -- (UIView *)mainView { - if (!_mainView) { - _mainView = [[UIView alloc] init]; - } - return _mainView; -} +- (void)setupCustomCell:(UICollectionViewCell *)cell forIndex:(NSInteger)index cycleScrollView:(SDCycleScrollView *)view { + XPGiftTwelveStarBroadcastCell *myCell = (XPGiftTwelveStarBroadcastCell *)cell; + XPWeekStarRankUserModel * info = [self.records safeObjectAtIndex1:index]; + [myCell.skipBtn addTarget:self action:@selector(skipBtnAction:) forControlEvents:UIControlEventTouchUpInside]; + myCell.userModel = info; -- (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; +- (SDCycleScrollView *)cycleScrollView { + if (!_cycleScrollView) { + _cycleScrollView = [[SDCycleScrollView alloc] init]; + _cycleScrollView.backgroundColor = [UIColor clearColor]; + _cycleScrollView.layer.masksToBounds = YES; + _cycleScrollView.delegate = self; + _cycleScrollView.showPageControl = NO; + _cycleScrollView.autoScrollTimeInterval = 5; + [_cycleScrollView disableScrollGesture]; + } + return _cycleScrollView; } - -- (UILabel *)charmLabel { - if (!_charmLabel) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10 weight:UIFontWeightMedium]; - label.textColor = UIColorFromRGB(0xFDE19B); - label.text = YMLocalizedString(@"XPGiftTwelveStarBroadcastView1"); - _charmLabel = label; - } - return _charmLabel; +- (NSMutableArray *)records{ + if(!_records){ + _records = [NSMutableArray array]; + } + return _records; +} +@end + + +@interface XPGiftTwelveStarBroadcastCell () +@property(nonatomic,strong) UIImageView *bgImageView; +@property(nonatomic,strong) NetImageView *headView; +@property(nonatomic,strong) UILabel *nameView; + +@property(nonatomic,strong) UIImageView *arrowView; +@end + +@implementation XPGiftTwelveStarBroadcastCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.bgImageView]; + [self.contentView addSubview:self.headView]; + [self.contentView addSubview:self.nameView]; + [self.contentView addSubview:self.skipBtn]; + [self.contentView addSubview:self.arrowView]; +} +-(void)setUserModel:(XPWeekStarRankUserModel *)userModel{ + _userModel = userModel; + _bgImageView.image = _userModel.type == 0 ? kImage(@"gift_twelve_star_Banner_naming_bg"):kImage(@"gift_twelve_star_Banner_rich_bg"); + NSString *name = _userModel.nick; + _nameView.text = name; + if(_userModel.type == 1){ + [self.headView mas_updateConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(205)); + }]; + + }else{ + [self.headView mas_updateConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(194)); + }]; + } + _headView.imageUrl = _userModel.avatar; +} +- (void)initSubViewConstraints { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.contentView); + }]; + [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(194)); + make.width.height.mas_equalTo(kGetScaleWidth(22)); + make.centerY.equalTo(self.contentView); + }]; + [self.arrowView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(8)); + make.trailing.mas_equalTo(-kGetScaleWidth(10)); + make.centerY.equalTo(self.contentView); + }]; + [self.skipBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.equalTo(self.arrowView.mas_leading).mas_offset(-kGetScaleWidth(2)); + make.centerY.equalTo(self.contentView); + make.width.mas_equalTo(kGetScaleWidth(32)); + make.height.mas_equalTo(kGetScaleWidth(14)); + }]; + [self.nameView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.equalTo(self.headView.mas_trailing).mas_offset(kGetScaleWidth(4)); + make.centerY.equalTo(self.contentView); + make.trailing.equalTo(self.skipBtn.mas_leading).mas_offset(-kGetScaleWidth(2)); + }]; +} + + + +#pragma mark - Getters And Setters +- (UIImageView *)bgImageView{ + if(!_bgImageView){ + _bgImageView = [UIImageView new]; + _bgImageView.userInteractionEnabled = YES; + } + return _bgImageView; +} + +- (NetImageView *)headView{ + if(!_headView){ + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = kImage(@"common_empty_avatar"); + _headView = [[NetImageView alloc]initWithConfig:config]; + _headView.layer.cornerRadius = kGetScaleWidth(22)/2; + _headView.layer.masksToBounds = YES; + } + return _headView; +} +- (UILabel *)nameView{ + if(!_nameView){ + + _nameView = [UILabel labelInitWithText:@"" font:kFontMedium(12) textColor:[UIColor whiteColor]]; + } + return _nameView; +} +- (UIButton *)skipBtn{ + if(!_skipBtn){ + _skipBtn = [UIButton new]; + [_skipBtn setTitle:YMLocalizedString(@"XPGiftLuckyGiftBroadcastCell6") forState:UIControlStateNormal]; + _skipBtn.titleLabel.font = kFontRegular(10); + [_skipBtn setTitleColor:UIColorFromRGB(0xFFE694) forState:UIControlStateNormal]; + } + return _skipBtn; +} +- (UIImageView *)arrowView{ + if(!_arrowView){ + _arrowView = [UIImageView new]; + _arrowView.image = kImage(@"gift_twelve_star_Banner_arrow"); + } + return _arrowView; } - -- (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 = YMLocalizedString(@"XPGiftTwelveStarBroadcastView2"); - _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/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.h b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.h deleted file mode 100644 index 5f07541b..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// YMGiftWeekStarBroadcastView.h -// YUMI -// -// Created by YUMI on 2022/10/8. -// - -#import -#import "GiftInfoModel.h" - -NS_ASSUME_NONNULL_BEGIN - -@protocol XPGiftWeekStarBroadcastViewDelegate - -///点击了周星榜入口 -- (void)xPGiftWeekStarBroadcastViewWeekStarClick; - -@end - -@interface XPGiftWeekStarBroadcastView : UIView - -@property (nonatomic, weak) id delegate; - -@property (nonatomic, strong) GiftInfoModel *giftInfo; - -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.m deleted file mode 100644 index f99a6840..00000000 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPGiftWeekStarBroadcastView.m +++ /dev/null @@ -1,261 +0,0 @@ -// -// YMGiftWeekStarBroadcastView.m -// YUMI -// -// Created by YUMI on 2022/10/8. -// - -#import "XPGiftWeekStarBroadcastView.h" -///Third -#import -///Tool -#import "DJDKMIMOMColor.h" -#import "NetImageView.h" - -@interface XPGiftWeekStarBroadcastView() - -///背景 -@property (nonatomic, strong) UIImageView *bgImageView; -///周星榜入口 -@property (nonatomic, strong) UIButton *weekStarButton; -///魅力头像 -@property (nonatomic, strong) NetImageView *charmImageView; -///贡献头像 -@property (nonatomic, strong) NetImageView *contributeImageView; -///魅力标题 -@property (nonatomic, strong) UILabel *charmLabel; -///贡献标题 -@property (nonatomic, strong) UILabel *contributeLabel; -///魅力昵称背景 -@property (nonatomic, strong) UIView *charmBgView; -///魅力昵称 -@property (nonatomic, strong) UILabel *charmNickLabel; -///贡献昵称背景 -@property (nonatomic, strong) UIView *contributeBgView; -///贡献昵称 -@property (nonatomic, strong) UILabel *contributeNickLabel; - -@end - -@implementation XPGiftWeekStarBroadcastView - -- (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.weekStarButton]; - [self addSubview:self.charmImageView]; - [self addSubview:self.charmLabel]; - [self addSubview:self.charmBgView]; - [self addSubview:self.charmNickLabel]; - [self addSubview:self.contributeImageView]; - [self addSubview:self.contributeLabel]; - [self addSubview:self.contributeBgView]; - [self addSubview:self.contributeNickLabel]; -} - -- (void)initSubViewConstraints { - [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(0); - make.left.right.mas_equalTo(self).inset(10); - make.height.mas_equalTo(44); - }]; - [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.bgImageView).mas_offset(10); - make.width.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.bgImageView); - }]; - [self.charmLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.charmImageView); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.charmImageView.mas_right).mas_offset(12); - }]; - [self.charmBgView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.charmNickLabel); - make.height.mas_equalTo(16); - make.left.right.mas_equalTo(self.charmNickLabel).inset(-6); - }]; - [self.charmNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.charmLabel.mas_bottom).mas_offset(6); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.charmLabel); - }]; - - [self.contributeImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.charmLabel.mas_right).mas_offset(24); - make.width.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.bgImageView); - }]; - [self.contributeLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contributeImageView); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.contributeImageView.mas_right).mas_offset(12); - }]; - [self.contributeBgView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self.contributeNickLabel); - make.height.mas_equalTo(16); - make.left.right.mas_equalTo(self.contributeNickLabel).inset(-6); - }]; - [self.contributeNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.contributeLabel.mas_bottom).mas_offset(6); - make.height.mas_equalTo(12); - make.left.mas_equalTo(self.contributeLabel); - }]; - [self.weekStarButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(30); - make.centerY.mas_equalTo(self.bgImageView); - make.right.mas_equalTo(self.bgImageView).mas_offset(-7); - make.width.mas_equalTo(38); - }]; -} - -#pragma mark - action -- (void)playButtonAction:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPGiftWeekStarBroadcastViewWeekStarClick)]) { - [self.delegate xPGiftWeekStarBroadcastViewWeekStarClick]; - } -} - -- (void)setGiftInfo:(GiftInfoModel *)giftInfo { - if (giftInfo.firstCharmRankUser) { - self.charmImageView.imageUrl = giftInfo.firstCharmRankUser.avatar; - NSString * nick = giftInfo.firstCharmRankUser.nick; - if (nick.length > 8) { - nick = [nick substringFromIndex:8]; - } - self.charmNickLabel.text = nick; - } else { - self.charmImageView.image = [UIImageConstant defaultEmptyAvatarPlaceholder]; - self.charmNickLabel.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView0"); - } - - if (giftInfo.firstLevelRankUser) { - self.contributeImageView.imageUrl = giftInfo.firstLevelRankUser.avatar; - NSString * nick = giftInfo.firstLevelRankUser.nick; - if (nick.length > 8) { - nick = [nick substringFromIndex:8]; - } - self.contributeNickLabel.text = nick; - } else { - self.contributeImageView.image = [UIImageConstant defaultEmptyAvatarPlaceholder]; - self.contributeNickLabel.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView1"); - } -} - -- (UIImageView *)bgImageView { - if (!_bgImageView) { - _bgImageView = [[UIImageView alloc] init]; - _bgImageView.image = [UIImage imageNamed:@"gift_weekStar_background"]; - _bgImageView.contentMode = UIViewContentModeScaleAspectFill; - } - return _bgImageView; -} - -- (NetImageView *)charmImageView { - if (!_charmImageView) { - NetImageConfig *config = [[NetImageConfig alloc] init]; - config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; - _charmImageView = [[NetImageView alloc] initWithConfig:config]; - _charmImageView.userInteractionEnabled = YES; - _charmImageView.layer.masksToBounds = YES; - _charmImageView.layer.cornerRadius = 15; - } - return _charmImageView; -} - -- (UILabel *)charmLabel { - if (!_charmLabel) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [DJDKMIMOMColor mainTextColor]; - label.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView2"); - _charmLabel = label; - } - return _charmLabel; -} - -- (UIView *)charmBgView { - if (!_charmBgView) { - UIView *view = [[UIView alloc] init]; - view.backgroundColor = UIColorRGBAlpha(0xffffff, 0.2); - view.layer.cornerRadius = 8; - view.layer.masksToBounds = YES; - _charmBgView = view; - } - return _charmBgView; -} - -- (UILabel *)charmNickLabel { - if (!_charmNickLabel) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [UIColor whiteColor]; - label.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView3"); - _charmNickLabel = label; - } - return _charmNickLabel; -} - -- (NetImageView *)contributeImageView { - if (!_contributeImageView) { - NetImageConfig *config = [[NetImageConfig alloc] init]; - config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; - _contributeImageView = [[NetImageView alloc] initWithConfig:config]; - _contributeImageView.userInteractionEnabled = YES; - _contributeImageView.layer.masksToBounds = YES; - _contributeImageView.layer.cornerRadius = 15; - } - return _contributeImageView; -} - -- (UILabel *)contributeLabel { - if (!_contributeLabel) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [DJDKMIMOMColor mainTextColor]; - label.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView4"); - _contributeLabel = label; - } - return _contributeLabel; -} - -- (UIView *)contributeBgView { - if (!_contributeBgView) { - UIView *view = [[UIView alloc] init]; - view.backgroundColor = UIColorRGBAlpha(0xffffff, 0.2); - view.layer.cornerRadius = 8; - view.layer.masksToBounds = YES; - _contributeBgView = view; - } - return _contributeBgView; -} -- (UILabel *)contributeNickLabel { - if (!_contributeNickLabel) { - UILabel *label = [[UILabel alloc] init]; - label.font = [UIFont systemFontOfSize:10]; - label.textColor = [UIColor whiteColor]; - label.text = YMLocalizedString(@"XPGiftWeekStarBroadcastView5"); - _contributeNickLabel = label; - } - return _contributeNickLabel; -} - -- (UIButton *)weekStarButton { - if (!_weekStarButton) { - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; - [button setImage:[UIImage imageNamed:@"gift_weekStar_entrance"] forState:UIControlStateNormal]; - [button addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _weekStarButton = button; - } - return _weekStarButton; -} - -@end diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m index 5cb4b1ff..37e4eeee 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m @@ -39,6 +39,7 @@ #import "XPGiftHeadTypeView.h" #import "XPGiftLuckyGiftBroadcastView.h" #import "XPGiftTwelveStarBroadcastView.h" +#import "XPNobleCenterViewController.h" ///P #import "XPGiftProtocol.h" ///VC @@ -457,8 +458,8 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; - (void)xPGiftHeadTypeViewDidClickNoble:(XPGiftHeadTypeView *)view { [self dismissViewControllerAnimated:NO completion:^{ [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceGiftClick]; -// XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid]; -// [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:nobleVC animated:YES]; + XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid]; + [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:nobleVC animated:YES]; }]; } ///点击了首充 @@ -504,19 +505,20 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; } } else if(type == GiftSegmentType_WeekStar) { [self.luckyBroadcastView removeFromSuperview]; - if ([ClientConfig shareConfig].configInfo.twelveStarSwitch) { +// if ([ClientConfig shareConfig].configInfo.twelveStarSwitch) { self.constellationBanner.hidden = NO; 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(75); + make.height.mas_equalTo(kGetScaleWidth(56)); }]; } - } else { - self.constellationBanner.hidden = YES; - } + +// } else { +// self.constellationBanner.hidden = YES; +// } } else { [self.luckyBroadcastView removeFromSuperview]; [self.constellationBanner removeFromSuperview]; @@ -537,7 +539,10 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; self.giftInfoView.hidden = NO; } }]; - } else { + }else if(type == GiftSegmentType_WeekStar){ + self.constellationBanner.giftInfo = info; + } + else { self.giftBarView.drawGiftCount = 10; } } @@ -571,7 +576,7 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; - (void)xPGiftTwelveStarBroadcastView:(XPGiftTwelveStarBroadcastView *)view didClickDetail:(UIButton *)sender { [self dismissViewControllerAnimated:NO completion:^{ XPWebViewController * webVC = [[XPWebViewController alloc] init]; - webVC.url = URLWithType(kXinZuoStarURL); + webVC.url = URLWithType(kNewWeekStarURL); [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; }]; } @@ -667,10 +672,10 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; - (void)luckyGiftBroadcastRecordSuccess:(NSArray *)records { self.records = records; self.luckyBroadcastView.records = records; -} +} - (void)getTwelveStarLastRankFirstSuccess:(GiftTwelveStarFirstModel *)model { - self.constellationBanner.giftInfo = model; + } #pragma mark - Event Response @@ -797,7 +802,7 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; - (XPGiftTwelveStarBroadcastView *)constellationBanner { if (!_constellationBanner) { - _constellationBanner = [[XPGiftTwelveStarBroadcastView alloc] init]; + _constellationBanner = [[XPGiftTwelveStarBroadcastView alloc] initWithFrame:CGRectZero]; _constellationBanner.delegate = self; } return _constellationBanner; diff --git a/YuMi/Modules/YMRoom/View/StageView/StageView.m b/YuMi/Modules/YMRoom/View/StageView/StageView.m index 9ac33769..6304d651 100644 --- a/YuMi/Modules/YMRoom/View/StageView/StageView.m +++ b/YuMi/Modules/YMRoom/View/StageView/StageView.m @@ -362,7 +362,12 @@ } - (void)onRoomUpdate { - self.isMiniEnter = NO; + self.isMiniEnter = NO; + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + for (int i = 0; i < self.countOfMircoView; i++) { + UIView * view = [self findMicroViewByIndex:i]; + [view showGiftValueMode:roomInfo.showGiftValue]; + } // [self microQueueUpdated]; } diff --git a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m index de1ec671..3fe3878c 100644 --- a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m +++ b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m @@ -204,7 +204,7 @@ #pragma mark - 福袋中 四级奖品 - (void)receiveLuckyGiftBigPrize:(AttachmentModel *)attachment { - if (attachment.second == Custom_Message_Sub_Room_Gift_LuckBag || attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_Server) { + if ( attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_FullScree) { PIBaseAnimationViewModel * prizeModel = [PIBaseAnimationViewModel modelWithDictionary:attachment.data]; prizeModel.type = GiftBannerType_Lucky; prizeModel.isInRoomVisiable = attachment.second == Custom_Message_Sub_Room_Gift_LuckBag; diff --git a/YuMi/Modules/YMTabbar/View/TabbarViewController.m b/YuMi/Modules/YMTabbar/View/TabbarViewController.m index 7314a587..0b9f4fd2 100644 --- a/YuMi/Modules/YMTabbar/View/TabbarViewController.m +++ b/YuMi/Modules/YMTabbar/View/TabbarViewController.m @@ -12,6 +12,7 @@ #import #import #import +#import ///Tool #import "YUMIMacroUitls.h" #import "DJDKMIMOMColor.h" @@ -81,6 +82,7 @@ #import "XPSkillCardPlayerManager.h" #import "PIFullScreenBannerAnimation.h" #import +#import "Api+Gift.h" UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; NSString * const kUserFirstLoginKey = @"kUserFirstLoginKey"; NSString * const kHadLaunchApp = @"kHadLaunchApp"; @@ -124,46 +126,47 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; @implementation TabbarViewController - (void)viewDidLoad { - [super viewDidLoad]; + [super viewDidLoad]; XPTabBar *tabBar = [[XPTabBar alloc] init]; [self setValue:tabBar forKey:@"tabBar"]; [self configTheme]; [self initTabs:NO]; - [[ClientConfig shareConfig] clientInit]; + [[ClientConfig shareConfig] clientInit]; [[NIMSDK sharedSDK].loginManager addDelegate:self]; - [[NIMSDK sharedSDK].chatManager addDelegate:self]; - [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; - [[NIMSDK sharedSDK].broadcastManager addDelegate:self]; - [self.presenter juliandAdCallBackApi]; - [self networkReachability]; - [self.view addSubview:self.roomMineView]; - [[NSNotificationCenter defaultCenter] addObserverForName:kRoomMiniNotificationKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { - [self configRoomMiniNView:note.userInfo]; - }]; - - [[NSNotificationCenter defaultCenter] addObserverForName:kUserCompleteInfoFinishKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { - [self completeUserInfoFinish:note.object]; - }]; - - [[NSNotificationCenter defaultCenter] addObserverForName:@"reloadnewtab" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { - if (self.isReload) { - [self initTabs:YES]; - self.isReload = YES; - } - }]; + [[NIMSDK sharedSDK].chatManager addDelegate:self]; + [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; + [[NIMSDK sharedSDK].broadcastManager addDelegate:self]; + [self.presenter juliandAdCallBackApi]; + [self networkReachability]; + [self.view addSubview:self.roomMineView]; + [[NSNotificationCenter defaultCenter] addObserverForName:kRoomMiniNotificationKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { + [self configRoomMiniNView:note.userInfo]; + }]; + + [[NSNotificationCenter defaultCenter] addObserverForName:kUserCompleteInfoFinishKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { + [self completeUserInfoFinish:note.object]; + }]; + + [[NSNotificationCenter defaultCenter] addObserverForName:@"reloadnewtab" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) { + if (self.isReload) { + [self initTabs:YES]; + self.isReload = YES; + } + }]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showNewUserRecharge) name:kNewUserRechargeKey object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showAnchorCardKey:) name:kTabShowAnchorCardKey object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(teenagerStatusChange:) name:kTeenagerStatusChange object:nil]; + } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:YES]; [self.presenter autoLogin]; - if ([XPRoomMiniManager shareManager].getRoomInfo == nil) { - [self.roomMineView hiddenRoomMiniView]; - } + if ([XPRoomMiniManager shareManager].getRoomInfo == nil) { + [self.roomMineView hiddenRoomMiniView]; + } } - (void)viewWillDisappear:(BOOL)animated { @@ -183,48 +186,48 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; /** 登录成功(通过token且换取ticket后)。 - 1. 登录云信。 - 2. 获取用户信息。 - 3. 其实目前多余回调V层,可以在P层里自行做这个逻辑。 + 1. 登录云信。 + 2. 获取用户信息。 + 3. 其实目前多余回调V层,可以在P层里自行做这个逻辑。 */ - (void)autoLoginSuccess { [self.presenter loginNIM]; [self.presenter getUserInfo]; - ///登录成功之后 在验证是否有漏单的行为 - [self.presenter checkTranscation]; - ///检查更新 - if ([ClientConfig shareConfig].canOpen) { - [self.presenter getVersionUpdate]; - - if (self.inviteCode && self.inviteCode.length > 0) { - ///邀请码进房 - [self.presenter checkInviteUserInfo:self.inviteCode]; - } - } - - - ///主要功能:给主播分流 -// [self clientStartApp]; - -// ///开启心跳 记录用户登录状态 -// [[ClientConfig shareConfig] addHeartBratTimer]; - - XPAdImageTool.shareImageTool.isImLogin = YES; - - if ([ClientConfig shareConfig].canOpen) { - if ([self hadLaunchApp] && [self canShowAnchorCard]) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - if (self.view.window && self.isViewLoaded) { - [self.presenter getAnchorCardInfo]; - } - }); - } - if (self.needShowAnchorCard && !self.delayShowAnchorCard && !self.parentMode) { - [self.presenter getAnchorCardInfo]; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kHadLaunchApp];///第一次弹主播卡片 - [[NSUserDefaults standardUserDefaults] synchronize]; - } - } + ///登录成功之后 在验证是否有漏单的行为 + [self.presenter checkTranscation]; + ///检查更新 + if ([ClientConfig shareConfig].canOpen) { + [self.presenter getVersionUpdate]; + + if (self.inviteCode && self.inviteCode.length > 0) { + ///邀请码进房 + [self.presenter checkInviteUserInfo:self.inviteCode]; + } + } + [self requestGiftList]; + + ///主要功能:给主播分流 + // [self clientStartApp]; + + // ///开启心跳 记录用户登录状态 + // [[ClientConfig shareConfig] addHeartBratTimer]; + + XPAdImageTool.shareImageTool.isImLogin = YES; + + if ([ClientConfig shareConfig].canOpen) { + if ([self hadLaunchApp] && [self canShowAnchorCard]) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + if (self.view.window && self.isViewLoaded) { + [self.presenter getAnchorCardInfo]; + } + }); + } + if (self.needShowAnchorCard && !self.delayShowAnchorCard && !self.parentMode) { + [self.presenter getAnchorCardInfo]; + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kHadLaunchApp];///第一次弹主播卡片 + [[NSUserDefaults standardUserDefaults] synchronize]; + } + } } /// 获取用户信息后检查:1、是否绑定手机号;2、是否需要完善用户信息。 @@ -243,20 +246,108 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; return; } [self initTabs:YES]; - if ([ClientConfig shareConfig].canOpen) { - if (self.inviteCode.length <= 0) { - [self initQuickEnterRoom]; - } - if (self.inviteCode) { - self.inviteCode = nil; - } - [self monentsUnReadCount]; - } + if ([ClientConfig shareConfig].canOpen) { + if (self.inviteCode.length <= 0) { + [self initQuickEnterRoom]; + } + if (self.inviteCode) { + self.inviteCode = nil; + } + [self monentsUnReadCount]; + } self.parentMode = userInfo.parentMode; for (BaseViewController *vc in self.viewControllers) { vc.parentMode = self.parentMode; } } +/// +-(void)requestGiftList{ + + NSString * uid = [AccountInfoStorage instance].getUid; + if(uid.length == 0)return; + ///保存时间,一天只请求一次 + NSString *time = [NSDate getNowTimeTimestamp]; + NSString *curTime = [NSDate timestampSwitchTime:[time integerValue] andFormatter:@"yyyy-MM-dd"]; + NSDictionary *timeDic = [[NSUserDefaults standardUserDefaults]valueForKey:@"kRequestGiftList"]; + if(timeDic == nil){ + [timeDic setValue:@(YES) forKey:curTime]; + [[NSUserDefaults standardUserDefaults]setValue:timeDic forKey:@"kRequestGiftList"]; + [[NSUserDefaults standardUserDefaults]synchronize]; + }else{ + if(timeDic[curTime]!= nil)return; + NSMutableDictionary *curDic = [[NSMutableDictionary alloc]initWithDictionary:timeDic]; + [curDic setValue:@(YES) forKey:curTime]; + [[NSUserDefaults standardUserDefaults]setValue:curDic forKey:@"kRequestGiftList"]; + [[NSUserDefaults standardUserDefaults]synchronize]; + } + + ///请求普通礼物 + [Api requestNormalGiftList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if(code == 200){ + NSArray *luckyBagGift = [GiftInfoModel modelsWithArray:data.data[@"luckyBagGift"]]; // 福袋礼物 + NSArray *vipGift = [GiftInfoModel modelsWithArray:data.data[@"vipGift"]]; // 贵族礼物 + NSArray *luckyPoolGift = [GiftInfoModel modelsWithArray:data.data[@"luckyPoolGift"]];// 福袋奖池礼物 + NSArray *normalGift = [GiftInfoModel modelsWithArray:data.data[@"normalGift"]]; // 普通面板礼物 + NSArray *weekStarGift = [GiftInfoModel modelsWithArray:data.data[@"weekStarGift"]]; // 周星礼物 + NSArray *anchorGift = [GiftInfoModel modelsWithArray:data.data[@"singlePopularGift"]]; // 个播礼物 + NSMutableArray *giftList = [[NSMutableArray alloc]initWithArray:luckyBagGift]; + [giftList addObjectsFromArray:vipGift]; + [giftList addObjectsFromArray:luckyPoolGift]; + [giftList addObjectsFromArray:normalGift]; + [giftList addObjectsFromArray:weekStarGift]; + [giftList addObjectsFromArray:anchorGift]; + NSMutableArray *vggUrlList = [NSMutableArray array]; + NSMutableArray *viewUrlList = [NSMutableArray array]; + for (GiftInfoModel *giftModel in giftList) { + if(giftModel.vggUrl.length > 0){ + [vggUrlList addObject:giftModel.vggUrl]; + [self dealWithGiftListWithUrl:giftModel.vggUrl fileName:giftModel.vggUrl isSvga:YES]; + }else if(giftModel.viewUrl.length > 0){ + [viewUrlList addObject:giftModel.viewUrl]; + [self dealWithGiftListWithUrl:giftModel.viewUrl fileName:giftModel.viewUrl isSvga:NO]; + } + + } + [self requestBagGiftListWithVggUrlList:vggUrlList viewUrlList:viewUrlList]; + } + } roomUid:uid]; + + +} +-(void)requestBagGiftListWithVggUrlList:(NSMutableArray *)list viewUrlList:(NSMutableArray *)viewUrlList{ + ///请求背包礼物 + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [AccountInfoStorage instance].getTicket; + [Api requestPackGiftList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if(code == 200){ + NSArray * info = [GiftInfoModel modelsWithArray:data.data]; + for (GiftInfoModel *giftModel in info) { + if(giftModel.vggUrl.length > 0 && ![list containsObject:giftModel.vggUrl]){ + [self dealWithGiftListWithUrl:giftModel.vggUrl fileName:giftModel.vggUrl isSvga:YES]; + }else if(giftModel.viewUrl.length > 0 && ![viewUrlList containsObject:giftModel.viewUrl]){ + [self dealWithGiftListWithUrl:giftModel.viewUrl fileName:giftModel.viewUrl isSvga:NO]; + } + + } + } + + } uid:uid ticket:ticket]; +} + +-(void)dealWithGiftListWithUrl:(NSString *)url fileName:(NSString *)fileName isSvga:(BOOL)isSvga { + NSString *baseFileName = isSvga ? @"/GiftSvga":@"/GiftMp4"; + NSString *filePaths = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:baseFileName] stringByAppendingPathComponent:fileName]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + if ([[NSFileManager defaultManager] fileExistsAtPath:filePaths])return; + [[[NSURLSession sharedSession] downloadTaskWithURL:[NSURL URLWithString:url] completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) { + if(!error){ + [fileManager createDirectoryAtPath:[filePaths stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil]; + NSData *data = [NSData dataWithContentsOfURL:location]; + [data writeToFile:filePaths atomically:YES]; + } + }] resume]; + +} - (void)checkInviteUserInfoSuccess:(InviteUserInfoModel *)inviteInfo { if (inviteInfo && inviteInfo.isInRoom && !self.parentMode) { @@ -815,6 +906,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; - (void)receiveBroadcastGift:(AttachmentModel *)attachment { GiftReceiveInfoModel *giftNotifyInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; if (!giftNotifyInfo.ceremonyGift && giftNotifyInfo.isHomeShow == YES) { + if([XPSkillCardPlayerManager shareInstance].isInRoom == YES)return; [self.roomAnimation receiveGift:giftNotifyInfo]; return; } diff --git a/YuMi/Structure/MVP/Api/Api.h b/YuMi/Structure/MVP/Api/Api.h index afb49a98..5eb19d0a 100644 --- a/YuMi/Structure/MVP/Api/Api.h +++ b/YuMi/Structure/MVP/Api/Api.h @@ -40,7 +40,7 @@ NS_ASSUME_NONNULL_BEGIN mobile:(NSString *)mobile code:(NSString *)code uid:(NSString *)uid - ticket:(NSString *)ticket; + ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode; /// 补全用户资料 /// @param complection 完成 diff --git a/YuMi/Structure/MVP/Api/Api.m b/YuMi/Structure/MVP/Api/Api.m index 5b8476c3..3e7cd6f7 100644 --- a/YuMi/Structure/MVP/Api/Api.m +++ b/YuMi/Structure/MVP/Api/Api.m @@ -72,9 +72,9 @@ mobile:(NSString *)mobile code:(NSString *)code uid:(NSString *)uid - ticket:(NSString *)ticket { + ticket:(NSString *)ticket phoneAreaCode:(NSString *)phoneAreaCode{ NSString * fang = [NSString stringFromBase64String:@"c21zL3ZlcmlmeQ=="];///sms/verify - [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, mobile, code, uid, ticket,nil]; + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, mobile, code, uid, ticket,phoneAreaCode,nil]; } /// 补全用户资料 diff --git a/YuMi/Structure/MVP/Model/UserInfoModel.h b/YuMi/Structure/MVP/Model/UserInfoModel.h index 64c76ff4..0443837e 100644 --- a/YuMi/Structure/MVP/Model/UserInfoModel.h +++ b/YuMi/Structure/MVP/Model/UserInfoModel.h @@ -134,6 +134,9 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic,strong) NSArray *dynamicInfo; @property (nonatomic,strong) NSMutableAttributedString *levelAtt; @property (nonatomic,strong) NSMutableAttributedString *idAtt; + +///区号 +@property (nonatomic,copy) NSString *phoneAreaCode; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Structure/PrefixHeader.pch b/YuMi/Structure/PrefixHeader.pch index 92a363fe..102bdc7d 100644 --- a/YuMi/Structure/PrefixHeader.pch +++ b/YuMi/Structure/PrefixHeader.pch @@ -30,4 +30,6 @@ #import "UIButton+EnlargeTouchArea.h" #import "UIView+Corner.h" #import "UILabel+Utils.h" +#import "TTPopup.h" +#import "NSDate+DateUtils.h" #endif /* PrefixHeader_pch */ diff --git a/YuMi/zh-Hans.lproj/Localizable.strings b/YuMi/zh-Hans.lproj/Localizable.strings new file mode 100644 index 00000000..8b6565dd --- /dev/null +++ b/YuMi/zh-Hans.lproj/Localizable.strings @@ -0,0 +1,2526 @@ +/* + Localizable.strings + YuMi + + Created by YuMi on 2023/6/20. + +*/ + + +///XPCandyTreeRankView.m +"XPCandyTreeRankView0" = "没有更多数据了"; + +///XPCandyTreeMoreView.m +"XPCandyTreeMoreView0" = "更多"; +"XPCandyTreeMoreView2" = "获奖记录"; +"XPCandyTreeMoreView3" = "玩法规则"; +"XPCandyTreeMoreView4" = "允许将中奖消息对外展示"; + +///XPCandyTreeEmptyableViewCell.m +"XPCandyTreeEmptyableViewCell0" = "暂无数据"; + +///XPCandyTreeMoreRuleCell.m +"XPCandyTreeMoreRuleCell0" = "财富值达到%ld级可用,快去升级吧~"; + +///XPCandyTreeViewController.m +"XPCandyTreeViewController0" = "%@钻/次"; +"XPCandyTreeViewController2" = "开启数量不能为0!"; +"XPCandyTreeViewController4" = "去参与"; +"XPCandyTreeViewController5" = "一次只能选择200次"; +"XPCandyTreeViewController7" = "排行榜"; + +///XPCandyRankContainerView.m +"XPCandyRankContainerView0" = "今日榜单"; +"XPCandyRankContainerView1" = "昨日榜单"; +///XPCandyTreeInsufficientBalanceView +"XPCandyTreeInsufficientBalanceView0"="温馨提示"; +"XPCandyTreeInsufficientBalanceView1"="钻石余额不足,请先充值吧~"; +"XPCandyTreeInsufficientBalanceView2"="去充值"; +///XPRoomActivityContainerView.m +"XPRoomActivityContainerView0" = "首充有礼"; +"XPRoomActivityContainerView1" = "信物"; +"XPRoomActivityContainerView2" = "PK已开始暂时无法排麦"; +///XPWebViewNavView +"XPWebViewNavView0"="充值"; +"RoomHeaderView3" = "複制链接"; +///LoginPresenter.m +"LoginPresenter0" = "登录取消"; +"LoginPresenter1" = "登录失败,请重试"; +"XPRoomStarKitchenBannerView0"="恭喜%@在星级厨房抽中%@倍奖励,获得 %@钻石!"; +"XPRoomMessageParser103"="恭喜%@在星级厨房抽中 %@倍奖励,获得 %@钻石!"; +///XPShareView.m +"XPShareView0" = "拷贝成功"; +"XPShareView1" = "来玩奥"; +"XPShareView2" = "请安装应用"; +"XPShareView3" = "这是标题"; +"XPShareView4" = "内容"; +"XPShareView5" = "分享失败"; +"XPShareView6" = "取消分享"; +"XPShareView7" = "取消"; +///XPFirstRechargeViewController.m +"XPFirstRechargeViewController0" = "1.每人仅可获得1次首充福利\n2.每个ID、设备仅能参加一次。"; +"XPFirstRechargeViewController1" = "立即充值"; +///XPFirstRechargeSuccessView.m +"XPFirstRechargeSuccessView0" = "装扮类物品可进入“我的一我的装扮”使用哦"; +"XPFirstRechargeSuccessView1" = "我知道了"; + +"StatisticsServiceHelper0" = "应用启动"; +"StatisticsServiceHelper1" = "一键登录成功"; +"StatisticsServiceHelper2" = "手机登录"; +"StatisticsServiceHelper3" = "qq登录"; +"StatisticsServiceHelper4" = "微信登录"; +"StatisticsServiceHelper5" = "注册时候的个人资料保存成功"; +"StatisticsServiceHelper6" = "开通贵族点击"; +"StatisticsServiceHelper7" = "贵族房间入口点击"; +"StatisticsServiceHelper8" = "贵族礼物面板入口点击"; +"StatisticsServiceHelper9" = "贵族表情面板入口点击"; +"StatisticsServiceHelper10" = "贵族我的页面入口点击"; + +"SDPhotoBrowser0" = "保存"; + +"SDBrowserImageView0" = "图片加载失败"; + +"NSDate_DateUtils0" = "MM月dd日"; +"NSDate_DateUtils1" = "yyyy年MM月dd日"; + +"PLTimeUtil0" = "yyyy年MM月dd日"; +"PLTimeUtil1" = "YYYY年MM月"; +"PLTimeUtil2" = "YYYY年MM月dd日"; +"PLTimeUtil3" = "yyyy年MM月"; +"PLTimeUtil4" = "MM月dd日"; + +"NSString_Utils0" = "%@万"; +"NSString_Utils1" = "MM月dd日"; +"NSString_Utils2" = "YYYY年MM月dd日"; +"NSString_Utils3" = "刚刚"; +"NSString_Utils4" = "%ld分钟前"; + +"QEmotionBoardView0" = "发送"; + +"QInputBarView0" = "按住说话"; +"QInputBarView1" = "鬆开结束"; +"QInputBarView2" = "手指上滑,取消发送"; +"QInputBarView3" = "手指上滑,取消发送"; +"QInputBarView4" = "鬆开手指 取消发送"; + +"QinputPhotoView0" = "最多只能选择9张图片"; +"QinputPhotoView1" = "相册"; +"QinputPhotoView2" = "原图"; +"QinputPhotoView3" = "发送"; + +"XPAdvertiseView0" = "跳过"; +"XPAdvertiseView1" = "跳过"; + +"XCHUDTool0" = "加载中"; +"XCHUDTool1" = "加载中"; + +"TTAlertConfig0" = "确定"; + +"TTActionSheetView0" = "取消"; + +"HttpRequestHelper0" = "请检查网络连接"; +"HttpRequestHelper1" = "请检查网络连接"; +"HttpRequestHelper2" = "请检查网络连接"; +"HttpRequestHelper3" = "登录已过期"; +"HttpRequestHelper4" = "大鹅开小差中~请稍后再试"; +"HttpRequestHelper5" = "接口报错信息未知"; +"HttpRequestHelper6" = "请检查网络连接"; + +"AppDelegate_ThirdConfig0" = "Piko"; + +"XPMineNotificaPresenter0" = "系统通知"; +"XPMineNotificaPresenter1" = "关闭后,系统消息和官方小秘书不再提示"; +"XPMineNotificaPresenter2" = "开播通知"; +"XPMineNotificaPresenter3" = "关闭后,官方小秘书不再提示您关注主播的开播情况"; + +"XPMineSettingPresent0" = "设置"; +"XPMineSettingPresent2" = "设置"; +"XPMineSettingPresent3" = "手机号码"; +"XPMineSettingPresent4" = "设置"; +"XPMineSettingPresent6" = "设置密码"; +"XPMineSettingPresent7" = "设置"; +"XPMineSettingPresent8" = "黑名单管理"; +"XPMineSettingPresent9" = "支付密码"; +"XPMineSettingPresent11" = "设置"; +"XPMineSettingPresent12" = "通知提醒设置"; +"XPMineSettingPresent13" = "设置"; +"XPMineSettingPresent14" = "个人信息与权限"; +"XPMineSettingPresent15" = "帮助"; +"XPMineSettingPresent16" = "我要反馈"; +"XPMineSettingPresent17" = "清除缓存"; +"XPMineSettingPresent18" = "检查更新"; +"XPMineSettingPresent19" = "关于"; +"XPMineSettingPresent20" = "黑名单"; +"XPMineSettingPresent21" = "绑定手机号"; +"XPMineSettingPresent23" = "设置密码"; +"XPMineSettingPresent24" = "清除缓存"; +"XPMineSettingPresent25" = "注销账号"; + +"XPMineUserInfoEditPresenter0" = "上传失败"; +"XPMineUserInfoEditPresenter1" = "昵称"; +"XPMineUserInfoEditPresenter2" = "头像"; +"XPMineUserInfoEditPresenter3" = "生日"; +"XPMineUserInfoEditPresenter4" = "相册"; +"XPMineUserInfoEditPresenter5" = "个人介绍"; + +"XPMineUserInfolbumPresenter0" = "上传失败"; + +"XPMineAttentionViewController0" = "没有更多数据了"; +"XPMineAttentionViewController1" = "我的关注"; +"XPMineAttentionViewController2" = "您还没有关注任何人"; + +"XPMineFriendViewController0" = "您还没有任何好友"; + +"XPMineShareViewController0" = "选择好友"; +"XPMineShareViewController1" = "确认分享给%@吗"; +"XPMineShareViewController4" = "关注"; + +"XPMineContactViewController3" = "关注"; + +"XPMineFansViewController0" = "没有更多房间了"; +"XPMineFansViewController1" = "我的粉丝"; +"XPMineFansViewController2" = "关注成功"; +"XPMineFansViewController3" = "您还没有任何粉丝"; + +"XPDressSearchViewController0" = "赠送成功"; +"XPDressSearchViewController1" = "请输入需要搜索的内容"; +"XPDressSearchViewController2" = "请输入需要搜索的内容"; + +"XPDressUpShopListViewController0" = "购买成功"; +"XPDressUpShopListViewController2" = "头饰使用成功"; +"XPDressUpShopListViewController4" = "座驾使用成功"; +"XPDressUpShopListViewController6" = "铭牌使用成功"; +"XPDressUpShopListViewController8" = "资料卡使用成功"; +"XPDressUpShopListViewController12" = "暂无聊天气泡"; + +"XPMineCarTableViewCell0" = "剩馀%ld天"; +"XPMineCarTableViewCell1" = "已过期"; +"XPMineCarTableViewCell2" = "取消使用"; +"XPMineCarTableViewCell3" = "使用"; +"XPMineCarTableViewCell4" = "使用"; + +"XPMineHeadwearTableViewCell0" = "剩馀%@天"; +"XPMineHeadwearTableViewCell1" = "已过期"; +"XPMineHeadwearTableViewCell2" = "取消使用"; +"XPMineHeadwearTableViewCell3" = "使用"; +"XPMineHeadwearTableViewCell4" = "使用"; + +"XPMineNobleCardTableViewCell0" = "剩馀%zd天"; +"XPMineNobleCardTableViewCell1" = "已过期"; +"XPMineNobleCardTableViewCell2" = "取消使用"; +"XPMineNobleCardTableViewCell3" = "使用"; +"XPMineNobleCardTableViewCell4" = "使用"; + +"XPMineNameplateTableViewCell0" = "剩馀%@天"; +"XPMineNameplateTableViewCell1" = "已过期"; +"XPMineNameplateTableViewCell2" = "取消使用"; +"XPMineNameplateTableViewCell3" = "使用"; +"XPMineNameplateTableViewCell4" = "使用"; + +"XPDressShopSearchTableViewCell0" = "%@号"; +"XPDressShopSearchTableViewCell1" = "赠送"; + +"XPDressUpShopCardTableViewCell0" = "%@(%zd天"; +"XPDressUpShopCardTableViewCell1" = "赠送"; +"XPDressUpShopCardTableViewCell2" = "购买"; +"XPDressUpShopCardTableViewCell3" = "限时"; + +"XPMineDressBubbleCollectionViewCell0" = "剩馀%zd天"; +"XPMineDressBubbleCollectionViewCell1" = "已过期"; +"XPMineDressBubbleCollectionViewCell2" = "取消使用"; +"XPMineDressBubbleCollectionViewCell3" = "使用"; +"XPMineDressBubbleCollectionViewCell4" = "使用"; + +"XPDressUpShopCollectionViewCell0" = "%@(%zd天"; +"XPDressUpShopCollectionViewCell1" = "赠送"; +"XPDressUpShopCollectionViewCell2" = "购买"; +"XPDressUpShopCollectionViewCell3" = "限时"; + +"XPMineDressEmptyTableViewCell0" = "暂无数据"; + +"XPMineDressEmptyCollectionViewCell0" = "暂无数据"; + +"XPMineDressUpBubbleViewController1" = "气泡使用成功"; +"XPMineDressUpBubbleViewController2" = "亲爱的用户,你还没有聊天气泡噢"; + +"XPDressUpShopCardViewController0" = "购买成功"; +"XPDressUpShopCardViewController2" = "头饰使用成功"; +"XPDressUpShopCardViewController4" = "座驾使用成功"; +"XPDressUpShopCardViewController6" = "铭牌使用成功"; +"XPDressUpShopCardViewController8" = "资料卡使用成功"; +"XPDressUpShopCardViewController9" = "暂无资料卡"; + +"XPMineDressUpViewController0" = "我的装扮"; +"XPMineDressUpViewController5" = "聊天气泡"; + +"XPMineDressUpListViewController1" = "头饰使用成功"; +"XPMineDressUpListViewController3" = "座驾使用成功"; +"XPMineDressUpListViewController5" = "铭牌使用成功"; +"XPMineDressUpListViewController7" = "资料卡使用成功"; +"XPMineDressUpListViewController10" = "亲爱的用户,你还没有铭牌噢"; + +"XPDressUpShopViewController0" = "我的装扮"; +"XPDressUpShopViewController1" = "装扮商城"; +"XPDressUpShopViewController6" = "聊天气泡"; +"XPDressUpShopViewController7" = "我的鑽石"; +"XPDressUpShopViewController8" = "充值"; + +"XPMineFansTeamViewController0" = "我加入的粉丝团"; +"XPMineFansTeamViewController1" = "暂无粉丝团"; + +"XPMineCollectPartyRoomViewController0" = "没有更多收藏记录了"; +"XPMineCollectPartyRoomViewController1" = "收藏的房间"; +"XPMineCollectPartyRoomViewController2" = "暂无收藏的房间"; + +"XPMinePayPwdInputView0" = "%ld后重试"; +"XPMinePayPwdInputView1" = "重新发送"; +"XPMinePayPwdInputView2" = "设置支付密码"; +"XPMinePayPwdInputView3" = "再次输支付密码"; +"XPMinePayPwdInputView4" = "请输入验证码"; +"XPMinePayPwdInputView5" = "获取验证码"; + +"XPMineNewUserRechargeView0" = "%zd天%zd小时%zd分"; +"XPMineNewUserRechargeView1" = "%zd天%zd分"; +"XPMineNewUserRechargeView2" = "%zd小时%zd分"; +"XPMineNewUserRechargeView3" = "%zd分"; + +"XPMineAccountView0" = "鑽石馀额"; + +"XPMineVerifIdentityView0" = "发送验证码"; + +"AnchorLevelTimeView0" = "时"; +"AnchorLevelTimeView1" = "分"; +"AnchorLevelTimeView2" = "秒"; + +"AnchorLevelProgressView0" = "收礼鑽石数"; +"AnchorLevelProgressView1" = "已完成"; +"AnchorLevelProgressView2" = "还差%ld鑽可完成"; +"AnchorLevelProgressView3" = "新用户私聊回覆率"; +"AnchorLevelProgressView4" = "已完成"; +"AnchorLevelProgressView5" = "还差%.0f%@可完成"; + +"AnchorLevelView0" = "当前评级"; + +///XPMineHeadView.m +"XPMineHeadView0" = "魔羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯"; +"XPMineHeadView1" = "错误日期格式!"; +"XPMineHeadView2" = "错误日期格式!!"; +"XPMineHeadView3" = "错误日期格式!!!"; +"XPMineHeadView4" = "关注"; +"XPMineHeadView5" = "粉丝"; +"XPMineHeadView6" = "%@座"; +"XPMineHeadView7" = "审核中"; +"XPMineHeadView8" = "复制成功"; + +"XPMineUserInfoHeaderView0" = "複制成功"; +"XPMineUserInfoHeaderView1" = "我是个默认签名"; +"XPMineUserInfoHeaderView2" = "%ld粉丝"; +"XPMineUserInfoHeaderView3" = "直播中"; + +"XPMineUserInfoDateView0" = "取消"; +"XPMineUserInfoDateView1" = "确定"; + +"XPMineRechageHeadView0" = "我的鑽石"; + +"XPMineRechargeNavView0" = "账户"; + +"XPFootPrintNavView0" = "全部清除"; +"XPFootPrintNavView1" = "足迹"; + +"XPMineAnchorFansTeamTableViewCell0" = "用户昵称"; + +"XPMineFriendTableViewCell0" = "这个人很懒还没有签名"; + +"XPMineFansTableViewCell0" = "这个人很懒还没有签名"; +"XPMineFansTableViewCell1" = "+关注"; +"XPMineFansTableViewCell2" = "互相关注"; + +"XPMineAttentionTableViewCell0" = "这个人很懒还没有签名"; +"XPMineAttentionTableViewCell1" = "找到"; + +"XPMineFriendEmptyTableViewCell0" = "暂无数据"; + +"XPMineDataGiftTableViewCell0" = "礼物牆"; +"XPMineDataGiftTableViewCell2" = "幸运礼物"; + +"XPMineUserInfoEmptyCollectionViewCell0" = "还未收到过礼物"; + +"XPMineDataClanTableViewCell0" = "公会·房间"; +"XPMineDataClanTableViewCell1" = "公会"; +"XPMineDataClanTableViewCell2" = "公会"; +"XPMineDataClanTableViewCell3" = "公会·房间"; +"XPMineDataClanTableViewCell4" = "申请加入"; + +"XPMineUserInfoTableViewCell0" = "%@号"; +"XPMineUserInfoTableViewCell1" = "我是个默认签名"; +"XPMineUserInfoTableViewCell2" = "直播中"; + +"XPMineVisitorEmptyTableViewCell0" = "暂无数据"; + +"XPMineVisitorTableViewCell0" = "用户昵称"; + +"XPMineRechargeTableViewCell0" = "鑽石"; + +"XPMineUserInfoViewController0" = "举报"; +"XPMineUserInfoViewController1" = "您的请求我们已经收到,我们将儘快处理"; +"XPMineUserInfoViewController2" = "拉黑"; +"XPMineUserInfoViewController3" = "移除黑名单"; +"XPMineUserInfoViewController4" = "移除黑名单,你将正常收到对方的消息"; +"XPMineUserInfoViewController5" = "加入黑名单"; +"XPMineUserInfoViewController6" = "加入黑名单,你将不再收到对方的消息"; +"XPMineUserInfoViewController7" = "移出黑名单成功"; +"XPMineUserInfoViewController8" = "加入黑名单成功"; +"XPMineUserInfoViewController9" = "编辑"; +"XPMineUserInfoViewController10" = "私信"; +"XPMineUserInfoViewController11" = "关注"; +"XPMineUserInfoViewController12" = "已关注"; +"XPMineUserInfoViewController14" = "动态"; + +"XPMineUserInfoAlbumViewController0" = "我的相册"; +"XPMineUserInfoAlbumViewController1" = "拍照上传"; +"XPMineUserInfoAlbumViewController3" = "相机权限受限,点击确定去系统设置"; +"XPMineUserInfoAlbumViewController5" = "相册权限受限,点击确定去系统设置"; +"XPMineUserInfoAlbumViewController6" = "本地相册"; +"XPMineUserInfoAlbumViewController8" = "相册权限受限,点击确定去系统设置"; +"XPMineUserInfoAlbumViewController10" = "相册权限受限,点击确定去系统设置"; +"XPMineUserInfoAlbumViewController11" = "最多只能上传8张照片"; +"XPMineUserInfoAlbumViewController12" = "删除是不可逆操作"; +"XPMineUserInfoAlbumViewController13" = "是否需要删除"; +"XPMineUserInfoAlbumViewController14" = "相片已送审,审核成功后自动上传相片"; +"XPMineUserInfoAlbumViewController15" = "删除成功"; +"XPMineUserInfoAlbumViewController16" = "编辑"; +"XPMineUserInfoAlbumViewController17" = "完成"; + +"XPMineUserDataViewController0" = "为了营造更安全的网络环境\n保护您和他人的财产安全\n请先进行实名认证"; +"XPMineUserDataViewController1" = "确定"; +"XPMineUserDataViewController2" = "实名认证"; +"XPMineUserDataViewController3" = "申请成功,等待管理员审核"; + +"XPMineSimpleUserInfoHeaderView0" = "我是个默认签名"; +"XPMineSimpleUserInfoHeaderView1" = "粉丝"; +"XPMineSimpleUserInfoHeaderView2" = "直播中"; +"XPMineSimpleUserInfoHeaderView3" = "礼物牆"; +"XPMineSimpleUserInfoHeaderView5" = "幸运礼物"; +"XPMineSimpleUserInfoHeaderView6" = "动态"; + +"XPMineSimpleUserInfoViewController0" = "举报"; +"XPMineSimpleUserInfoViewController1" = "您的请求我们已经收到,我们将儘快处理"; +"XPMineSimpleUserInfoViewController2" = "拉黑"; +"XPMineSimpleUserInfoViewController3" = "移除黑名单"; +"XPMineSimpleUserInfoViewController4" = "移除黑名单,你将正常收到对方的消息"; +"XPMineSimpleUserInfoViewController5" = "加入黑名单"; +"XPMineSimpleUserInfoViewController6" = "加入黑名单,你将不再收到对方的消息"; +"XPMineSimpleUserInfoViewController7" = "移出黑名单成功"; +"XPMineSimpleUserInfoViewController8" = "加入黑名单成功"; +"XPMineSimpleUserInfoViewController9" = "和TA聊天"; +"XPMineSimpleUserInfoViewController10" = "关注"; +"XPMineSimpleUserInfoViewController11" = "已关注"; + +"XPMineUserInfoDesViewController0" = "修改个人介绍"; +"XPMineUserInfoDesViewController1" = "最多输入%ld个介绍"; +"XPMineUserInfoDesViewController2" = "填写自我介绍,可以让别人更瞭解你哦"; +"XPMineUserInfoDesViewController3" = "完成"; + +"XPMineUserInfoEditViewController0" = "编辑个人资料"; +"XPMineUserInfoEditViewController1" = "拍照上传"; +"XPMineUserInfoEditViewController3" = "相机权限受限,点击确定去系统设置"; +"XPMineUserInfoEditViewController5" = "相册权限受限,点击确定去系统设置"; +"XPMineUserInfoEditViewController6" = "本地相册"; +"XPMineUserInfoEditViewController8" = "相册权限受限,点击确定去系统设置"; +"XPMineUserInfoEditViewController10" = "相册权限受限,点击确定去系统设置"; +"XPMineUserInfoEditViewController11" = "头像正在审核中"; +"XPMineUserInfoEditViewController12" = "头像已送审,审核成功后自动应用头像"; +"XPMineUserInfoEditViewController13" = "更新成功"; + +"XPMineUserInfoNickViewController0" = "修改昵称"; +"XPMineUserInfoNickViewController1" = "输入字数已达上限"; +"XPMineUserInfoNickViewController2" = "输入字数已达上限"; +"XPMineUserInfoNickViewController3" = "完成"; + +"XPMineUserInfoGiftWallViewController0" = "礼物"; +"XPMineUserInfoGiftWallViewController2" = "幸运礼物"; + +"XPMineVisitorViewController0" = "没有更多访客记录了"; +"XPMineVisitorViewController1" = "访客记录"; +"XPMineVisitorViewController2" = "暂无访客记录"; + +"XPMineViewController0" = "为了营造更安全的网络环境\n保护您和他人的财产安全\n请先进行实名认证"; +"XPMineViewController1" = "确定"; +"XPMineViewController2" = "实名认证"; + +"XPSimpleMineViewController0" = "你还没有工会"; +"XPSimpleMineViewController1" = "我的工会"; +"XPSimpleMineViewController2" = "个性装扮"; +"XPSimpleMineViewController3" = "粉丝团列表"; +"XPSimpleMineViewController4" = "青少年模式"; +"XPSimpleMineViewController5" = "意见反馈"; +"XPSimpleMineViewController6" = "设置"; + +"XPIAPRechargeHeaderView0" = "馀额"; + +"XPIAPRechargeViewController0" = "购买失败"; +"XPIAPRechargeViewController1" = "出现未知错误,请重新尝试"; +"XPIAPRechargeViewController2" = "确定充值"; +"XPIAPRechargeViewController3" = "《用户充值协议"; +"XPIAPRechargeViewController4" = "已阅读并同意"; +"XPIAPRechargeViewController5" = "如有任何问题请咨询客服,Piko号"; +"XPIAPRechargeViewController6" = "我的账户"; +"XPIAPRechargeViewController7" = "未成年禁止充值消费!请勿轻易相信各类刷单、 退款等信息,以免上当受骗"; + +"XPMineRechargeViewController0" = "购买失败"; +"XPMineRechargeViewController1" = "出现未知错误,请重新尝试"; +"XPMineRechargeViewController2" = "《用户充值协议"; +"XPMineRechargeViewController3" = "已阅读并同意"; + +///XPMinePayPwdViewController.m +"XPMinePayPwdViewController0" = "设置支付密码"; +"XPMinePayPwdViewController1" = "获取手机号失败"; +"XPMinePayPwdViewController2" = "验证码发送成功"; +"XPMinePayPwdViewController3" = "设置支付密码成功"; +"XPMinePayPwdViewController4" = "支付密码必须为6位的纯数字哦~"; +"XPMinePayPwdViewController5" = "支付密码必须为纯数字"; +"XPMinePayPwdViewController6" = "两次输入密码不一致"; +"XPMinePayPwdViewController7" = "请输入验证码"; +"XPMinePayPwdViewController8" = "确定"; +"XPMinePayPwdViewController9" = "验证码已发送至您绑定的手机%@****%@"; +"XPMinePayPwdViewController10" = "输入支付密码"; +"XPMinePayPwdViewController11" = "再次输入支付密码"; + +"XPMineBlackListViewController0" = "黑名单"; +"XPMineBlackListViewController1" = "移除"; + +"XPMineResetPayPwdViewController0" = "重置支付密码"; +"XPMineResetPayPwdViewController1" = "重置支付密码成功"; +"XPMineResetPayPwdViewController2" = "两次输入的密码不一致哦"; +"XPMineResetPayPwdViewController3" = "输入支付密码"; +"XPMineResetPayPwdViewController4" = "再次输入支付密码"; +"XPMineResetPayPwdViewController5" = "确定"; + +"XPMineSettingViewController0" = "设置"; +"XPMineSettingViewController1" = "请先绑定手机号码哦"; +"XPMineSettingViewController2" = "清除缓存"; +"XPMineSettingViewController3" = "要清除缓存吗"; +"XPMineSettingViewController4" = "清除缓存完成"; +"XPMineSettingViewController5" = "目前已更新到最新版本"; +"XPMineSettingViewController6" = "目前已更新到最新版本"; +"XPMineSettingViewController7" = "退出当前账号"; +"XPMineSettingViewController8" = "退出账号"; + +"XPMineModifPayPwdViewController0" = "修改支付密码"; +"XPMineModifPayPwdViewController1" = "修改支付密码成功"; +"XPMineModifPayPwdViewController2" = "两次输入的新密码不一致哦"; +"XPMineModifPayPwdViewController3" = "新支付密码必须为纯数字"; +"XPMineModifPayPwdViewController4" = "请输入当前支付密码"; +"XPMineModifPayPwdViewController5" = "输入支付密码"; +"XPMineModifPayPwdViewController6" = "再次输入支付密码"; +"XPMineModifPayPwdViewController7" = "确定"; +"XPMineModifPayPwdViewController8" = "忘记密码"; + +"XPMineFeedbackViewController0" = "反馈"; +"XPMineFeedbackViewController1" = "感谢您的宝贵意见,让我们共同营造更好的"; +"XPMineFeedbackViewController2" = "问题描述"; +"XPMineFeedbackViewController3" = "请详细描述您所遇到的问题与情况,感谢您提出宝贵的意见"; +"XPMineFeedbackViewController4" = "请输入您的QQ或微信号"; +"XPMineFeedbackViewController5" = "提交反馈"; + +"XPMineAboutUsViewController0" = "关于"; + +"XPMineNotificaViewController0" = "通知提醒设置"; + +"XPMineResetLoginPwdViewController0" = "忘记密码"; +"XPMineResetLoginPwdViewController1" = "请输入手机号"; +"XPMineResetLoginPwdViewController2" = "验证码发送成功"; +"XPMineResetLoginPwdViewController3" = "密码重置成功,请重新登录"; +"XPMineResetLoginPwdViewController4" = "%ds后重试"; +"XPMineResetLoginPwdViewController5" = "重新发送"; +"XPMineResetLoginPwdViewController6" = "下一步"; +"XPMineResetLoginPwdViewController7" = "请输入您的手机号码"; +"XPMineResetLoginPwdViewController8" = "请输入您收到的验证码"; +"XPMineResetLoginPwdViewController9" = "请输入密码(6-16个字符)数字和英文字母组合"; + +"XPMineLoginPasswordViewController0" = "设置成功"; +"XPMineLoginPasswordViewController1" = "修改成功"; +"XPMineLoginPasswordViewController2" = "两次输入的新密码不一致哦"; +"XPMineLoginPasswordViewController3" = "输入原密码"; +"XPMineLoginPasswordViewController4" = "输入新密码"; +"XPMineLoginPasswordViewController5" = "再次确认密码"; +"XPMineLoginPasswordViewController6" = "重置密码"; +"XPMineLoginPasswordViewController7" = "输入密码"; +"XPMineLoginPasswordViewController8" = "再次确认密码"; +"XPMineLoginPasswordViewController9" = "设置密码"; +"XPMineLoginPasswordViewController10" = "确定"; +"XPMineLoginPasswordViewController11" = "忘记密码"; +"XPMineLoginPasswordViewController12" = "密码必须使用6-16个字符内的数字和英文字母组合哦"; + +"XPMineVerifIdentityViewController0" = "验证身份"; +"XPMineVerifIdentityViewController1" = "请输入手机号"; +"XPMineVerifIdentityViewController2" = "验证码发送成功"; +"XPMineVerifIdentityViewController3" = "验证成功"; +"XPMineVerifIdentityViewController4" = "%ds后重试"; +"XPMineVerifIdentityViewController5" = "重新发送"; +"XPMineVerifIdentityViewController6" = "下一步"; +"XPMineVerifIdentityViewController7" = "请输入您的手机号码"; +"XPMineVerifIdentityViewController8" = "请输入您收到的验证码"; + +"XPMineCollectRoomListViewController0" = "取消收藏成功"; +"XPMineCollectRoomListViewController1" = "收藏的房间"; +"XPMineCollectRoomListViewController2" = "请选择房间"; +"XPMineCollectRoomListViewController3" = "请选择房间"; +"XPMineCollectRoomListViewController4" = "全选"; +"XPMineCollectRoomListViewController5" = "管理"; +"XPMineCollectRoomListViewController6" = "完成"; +"XPMineCollectRoomListViewController7" = "删除"; +"XPMineCollectRoomListViewController8" = "派对房"; +"XPMineCollectRoomListViewController9" = "直播房"; + +"XPSimpleMineHeaderView0" = "关注"; +"XPSimpleMineHeaderView1" = "粉丝"; +"XPSimpleMineHeaderView2" = "访客"; +"XPSimpleMineHeaderView3" = "浏览"; +"XPSimpleMineHeaderView4" = "我的钱包"; +"XPSimpleMineHeaderView5" = "我的房间"; +"XPSimpleMineHeaderView6" = "我的收藏"; +"XPSimpleMineHeaderView7" = "我的等级"; + +"XPMineFootPrintViewController0" = "没有更多进房记录了"; +"XPMineFootPrintViewController1" = "删除成功"; +"XPMineFootPrintViewController2" = "收藏成功"; +"XPMineFootPrintViewController3" = "暂无进房记录"; +"XPMineFootPrintViewController4" = "删除"; +"XPMineFootPrintViewController5" = "收藏"; + +"XPPrivacyViewController0" = "个人信息与权限"; +"XPPrivacyViewController1" = "系统权限管理"; +"XPPrivacyViewController2" = "隐私保护指引"; +"XPPrivacyViewController3" = "第三方 SDK 目录"; +"XPPrivacyViewController4" = "个人信息收集清单"; +"XPPrivacyViewController5" = "设备权限清单"; +"XPPrivacyViewController6" = "用户充值协议"; +"XPPrivacyViewController7" = "用户注册服务协议"; +"XPPrivacyViewController8" = "直播服务协议"; +"XPPrivacyViewController9" = "社区规范"; +"XPPrivacyViewController10" = "账号注销协议"; + +"XPPermissionsViewController0" = "系统权限管理"; +"XPPermissionsViewController1" = "照片"; +"XPPermissionsViewController2" = "读取相册或者存储图片到相册"; +"XPPermissionsViewController3" = "麦克风"; +"XPPermissionsViewController4" = "录制音频"; +"XPPermissionsViewController5" = "相机"; +"XPPermissionsViewController6" = "拍摄照片或录制视频"; +"XPPermissionsViewController7" = "未有已授权的系统权限"; +"XPPermissionsViewController8" = "—— 仅展示能查询到的已授权系统权限"; +"XPPermissionsViewController9" = "前往系统设置"; + +"XPRoomSearchContainerViewController0" = "请输入需要搜索的内容"; +"XPRoomSearchContainerViewController1" = "请输入需要搜索的内容"; +"XPRoomSearchContainerViewController2" = "请输入需要搜索的内容"; +"XPRoomSearchContainerViewController4" = "用户"; + +"XPRoomSearchRecordViewController0" = "清空"; +"XPRoomSearchRecordViewController1" = "手滑了"; +"XPRoomSearchRecordViewController2" = "确定清空搜索记录吗"; +"XPRoomSearchRecordViewController3" = "清空"; +"XPRoomSearchRecordViewController4" = "手滑了"; +"XPRoomSearchRecordViewController5" = "确定清空进房记录吗"; +"XPRoomSearchRecordViewController6" = "大家都在搜"; +"XPRoomSearchRecordViewController7" = "搜索记录"; +"XPRoomSearchRecordViewController8" = "进房记录"; + +"XPHomeRedommendCollectionViewCell0" = "PK中"; +"XPHomeRedommendCollectionViewCell1" = "虚位以待"; + +"XPHomeCollectRoomTableViewCell0" = "pk中"; + +"XPSearchListTableViewCell0" = "%@号"; +"XPSearchListTableViewCell1" = "直播中"; +"XPSearchListTableViewCell2" = "%@号"; +"XPSearchListTableViewCell3" = "消息"; +"XPSearchListTableViewCell4" = "直播中"; + +"XPHomeAttentionCollectionViewCell0" = "直播"; + +"XPHomeSearchRelateView0" = "相关房间"; + +"XPHomeSearchNavView0" = "搜索昵称/ID/房间名"; +"XPHomeSearchNavView1" = "搜索"; + +"XPRoomSearchRecommendHeadView0" = "暂无开播厅房"; +"XPRoomSearchRecommendHeadView1" = "为你推荐"; + +"XPNewHomePlayEmptyTableViewCell0" = "快来创建房间一起交友吧"; + +"XPNewHomeViewController0" = "推荐"; +"XPNewHomeViewController1" = "推荐"; +"XPNewHomeViewController2" = "推荐"; +"XPNewHomeViewController3" = "推荐"; + +"XPNewHomeNavView0" = "搜索昵称/ID/房间"; + +"XPHomeRecommendViewController0" = "扩列聊天"; +"XPHomeRecommendViewController1" = "房间派对"; + +"XPHomePartyViewController0" = "没有更多房间了"; + +"XPRoomNewUserGreetView0" = "Ta向你发送了一条消息"; +"XPRoomNewUserGreetView1" = "Ta们向你发送了多条消息"; +"XPRoomNewUserGreetView2" = "Ta向你发送了多条消息"; +"XPRoomNewUserGreetView3" = "点击查看"; + +"XPAnchorPKRuleView0" = "PK规则"; + +"XPAnchorRandomPKRuleView0" = "PK规则"; +"XPAnchorRandomPKRuleView1" = "随机"; +"XPAnchorRandomPKRuleView2" = "参与匹配,随机与一名主播房主播PK,匹配成功后开启PK。PK时长固定"; +"XPAnchorRandomPKRuleView3" = "邀请"; +"XPAnchorRandomPKRuleView4" = "指定一个主播房主播,邀请其进行PK,对方接受后开启"; + +"XPAnchorPKResultView0" = "PK值"; +"XPAnchorPKResultView1" = "PK值"; +"XPAnchorPKResultView2" = "关闭"; +"XPAnchorPKResultView3" = "关闭"; +"XPAnchorPKResultView4" = "本场PK贡献值前三"; +"XPAnchorPKResultView5" = "暂时无人送礼,再玩一局吧"; + +"XPAnchorPKInviteView0" = "PK时长"; +"XPAnchorPKInviteView1" = "%@分钟"; +"XPAnchorPKInviteView2" = "PK邀请"; +"XPAnchorPKInviteView3" = "邀请方"; +"XPAnchorPKInviteView4" = "PK时长"; +"XPAnchorPKInviteView5" = "PK玩法"; +"XPAnchorPKInviteView6" = "拒绝"; +"XPAnchorPKInviteView7" = "接受"; + +"XPAnchorPKFinishView0" = "PK结束"; + +"XPAnchorPkPanelView0" = "主播已关闭对方房间的声音"; +"XPAnchorPkPanelView1" = "结果计算中"; +"XPAnchorPkPanelView2" = "关注成功"; +"XPAnchorPkPanelView3" = "惩罚时间"; + +"XPAnchorPKViewController0" = "pk已发起,请等待对方接受"; +"XPAnchorPKViewController1" = "知道了"; +"XPAnchorPKViewController2" = "PK时长最长为30分钟"; +"XPAnchorPKViewController3" = "PK时长最短为5分钟"; +"XPAnchorPKViewController4" = "主播"; +"XPAnchorPKViewController5" = "选择PK对象"; +"XPAnchorPKViewController6" = "选择PK时长"; +"XPAnchorPKViewController7" = "10分钟"; +"XPAnchorPKViewController8" = "20分钟"; +"XPAnchorPKViewController9" = "30分钟"; +"XPAnchorPKViewController10" = "自定义(5-30)分钟"; +"XPAnchorPKViewController11" = "PK玩法"; +"XPAnchorPKViewController12" = "选填,10个字以内"; +"XPAnchorPKViewController13" = "发起挑战"; + +"XPAnchorPKSelectTypeController0" = "选择PK方式"; + +"XPAnchorPKTableViewCell0" = "PK中"; +"XPAnchorPKTableViewCell1" = "离线"; +"XPAnchorPKTableViewCell2" = "选择"; +"XPAnchorPKTableViewCell3" = "选择"; + +"XPAnchorPKSelectRoomView0" = "没有更多房间了"; +"XPAnchorPKSelectRoomView1" = "请输入要搜索的厅"; +"XPAnchorPKSelectRoomView2" = "请输入厅的"; + +"XPRoomPKResultView0" = "· 蓝队战绩"; +"XPRoomPKResultView1" = "查看我的战绩"; +"XPRoomPKResultView2" = "无"; +"XPRoomPKResultView3" = "· 红队战绩"; +"XPRoomPKResultView4" = "查看对方战绩"; +"XPRoomPKResultView5" = "无"; +"XPRoomPKResultView6" = "· 红队战绩"; +"XPRoomPKResultView7" = "查看我的战绩"; +"XPRoomPKResultView8" = "无"; +"XPRoomPKResultView9" = "· 蓝队战绩"; +"XPRoomPKResultView10" = "查看红队战绩"; +"XPRoomPKResultView11" = "无"; +"XPRoomPKResultView12" = "· 红队战绩"; +"XPRoomPKResultView13" = "查看蓝队战绩"; +"XPRoomPKResultView14" = "无"; +"XPRoomPKResultView15" = "· 蓝队战绩"; +"XPRoomPKResultView16" = "查看红队战绩"; +"XPRoomPKResultView17" = "无"; +"XPRoomPKResultView18" = "· 蓝队胜利"; +"XPRoomPKResultView19" = "查看红队战绩"; +"XPRoomPKResultView20" = "无"; +"XPRoomPKResultView21" = "· 红队胜利"; +"XPRoomPKResultView22" = "查看蓝队战绩"; +"XPRoomPKResultView23" = "无"; +"XPRoomPKResultView24" = "· 势均力敌"; +"XPRoomPKResultView25" = "本局平局 战斗值"; +"XPRoomPKResultView26" = "PK选手"; +"XPRoomPKResultView27" = "战斗值"; +"XPRoomPKResultView28" = "守护者"; +"XPRoomPKResultView29" = "守护值"; +"XPRoomPKResultView30" = "查看对方战绩"; +"XPRoomPKResultView31" = "彆气馁,%@永远支持你"; + +"XPRoomPKRecordViewController0" = "PK记录"; +"XPRoomPKRecordViewController1" = "没有更多的记录了"; + +"XPRoomPKTimePickerView0" = "%d分钟"; +"XPRoomPKTimePickerView1" = "0分钟"; +"XPRoomPKTimePickerView2" = "30分钟"; +"XPRoomPKTimePickerView3" = "%d分%d秒"; +"XPRoomPKTimePickerView4" = "%d秒"; +"XPRoomPKTimePickerView5" = "取消"; +"XPRoomPKTimePickerView6" = "确定"; +"XPRoomPKTimePickerView7" = "0秒"; +"XPRoomPKTimePickerView8" = "30秒"; + +"XPRoomPKSelectUserView0" = "0号麦位"; +"XPRoomPKSelectUserView1" = "确定"; +"XPRoomPKSelectUserView2" = "%d号麦位"; + +"XPRoomPKUserView0" = "等待上麦"; +"XPRoomPKUserView1" = "等待上麦"; + +"XPRoomPKTimeTableViewCell0" = "PK时间"; +"XPRoomPKTimeTableViewCell1" = "30秒"; + +"XPRoomPKTypeTableViewCell0" = "PK模式"; +"XPRoomPKTypeTableViewCell1" = "按团队"; + +"XPRoomPKVoteTableViewCell0" = "投票类型"; +"XPRoomPKVoteTableViewCell1" = "按礼物价值"; +"XPRoomPKVoteTableViewCell2" = "按送礼人数"; + +"XPRoomPKRecordTableViewCell0" = "平局"; +"XPRoomPKRecordTableViewCell1" = "平局"; +"XPRoomPKRecordTableViewCell2" = "胜利"; +"XPRoomPKRecordTableViewCell3" = "失败"; +"XPRoomPKRecordTableViewCell4" = "失败"; +"XPRoomPKRecordTableViewCell5" = "胜利"; +"XPRoomPKRecordTableViewCell6" = "按礼物价值"; +"XPRoomPKRecordTableViewCell7" = "按送礼人数"; + +"XPRoomPKEmptyTableViewCell0" = "暂无数据"; + +"XPRoomPKProgressView0" = "开始PK成功"; +"XPRoomPKProgressView1" = "关闭PK模式成功"; +"XPRoomPKProgressView2" = "未开始"; +"XPRoomPKProgressView3" = "重新开始将会提前结束本次PK\n确认重新开始吗"; +"XPRoomPKProgressView4" = "是否再次开始"; +"XPRoomPKProgressView5" = "当前正在准备阶段,是否确认准备开始"; +"XPRoomPKProgressView6" = "每队至少有一个人"; +"XPRoomPKProgressView7" = "获取PK信息失败"; +"XPRoomPKProgressView8" = "未开始"; +"XPRoomPKProgressView9" = "开始"; + +"XPRoomPKViewController0" = "创建"; +"XPRoomPKViewController1" = "PK记录"; +"XPRoomPKViewController2" = "创建成功"; +"XPRoomPKViewController3" = "结束PK,会关闭现在进行的PK并恢复普通房间模式,确定关闭当前PK吗"; +"XPRoomPKViewController4" = "创建此PK,会覆盖现在进行的PK,\n 确定覆盖当前PK吗"; +"XPRoomPKViewController5" = "确定"; +"XPRoomPKViewController6" = "再次创建"; +"XPRoomPKViewController7" = "关闭PK模式"; + +"XPRoomPKPlayingView1" = "按送礼人数"; +"XPRoomPKPlayingView2" = "重新开始"; + +"XPAcrossRoomPKViewController0" = "pk已发起,请等待对方接受"; +"XPAcrossRoomPKViewController1" = "知道了"; +"XPAcrossRoomPKViewController2" = "PK时长最长为180分钟"; +"XPAcrossRoomPKViewController3" = "PK时长最短为5分钟"; +"XPAcrossRoomPKViewController4" = "跨房"; +"XPAcrossRoomPKViewController5" = "选择PK对象"; +"XPAcrossRoomPKViewController6" = "选择PK时长"; +"XPAcrossRoomPKViewController7" = "10分钟"; +"XPAcrossRoomPKViewController8" = "20分钟"; +"XPAcrossRoomPKViewController9" = "30分钟"; +"XPAcrossRoomPKViewController10" = "自定义(5-180)分钟"; +"XPAcrossRoomPKViewController11" = "PK玩法"; +"XPAcrossRoomPKViewController12" = "选填,10个字以内"; +"XPAcrossRoomPKViewController13" = "发起挑战"; + +"XPAcrossRoomPKInviteResultView0" = "对方接受你的pk请求,pk准备中"; +"XPAcrossRoomPKInviteResultView1" = "对方拒绝你的pk请求"; + +"XPAcrpssRoomPKPanelView0" = "PK结果计算中"; +"XPAcrpssRoomPKPanelView1" = "1)按收到的礼物价值积分(1鑽石=1分),礼物值高的一方获胜。\n2)PK结束后,若比分差距≥1314或双方分数总值≥15000(平局除外)将在与获胜方相同类型的房间公示PK结果;若比分差距≥5200或双方分数总值≥30000(平局除外)将在全服所有房间公示PK结果"; +"XPAcrpssRoomPKPanelView2" = "助攻"; +"XPAcrpssRoomPKPanelView3" = "去围观"; +"XPAcrpssRoomPKPanelView4" = "神豪"; +"XPAcrpssRoomPKPanelView5" = "魅力"; + +"XPAcrossRoomPKForceEndResultView0" = "PK结束"; + +"XPAcrossRoomPKCountDownView0" = "下一场"; + +"XPAcrossRoomPKPrizeView0" = "去围观"; +"XPAcrossRoomPKPrizeView1" = "来围观"; + +"XPAcrossRoomPKResultView0" = "神豪值"; +"XPAcrossRoomPKResultView1" = "魅力值"; + +"XPAnchorPKMatchView0" = "取消匹配"; +"XPAnchorPKMatchView1" = "暂未匹配到合适的PK对象\n是否继续"; +"XPAnchorPKMatchView2" = "PK匹配中"; + +"XPAcrossRoomPKInviteView0" = "PK时长"; +"XPAcrossRoomPKInviteView1" = "%@分钟"; +"XPAcrossRoomPKInviteView2" = "PK邀请"; +"XPAcrossRoomPKInviteView3" = "邀请方"; +"XPAcrossRoomPKInviteView4" = "PK时长"; +"XPAcrossRoomPKInviteView5" = "PK玩法"; +"XPAcrossRoomPKInviteView6" = "拒绝"; +"XPAcrossRoomPKInviteView7" = "接受"; + +"XPAcrossRoomPKRuleView0" = "如何开启跨房"; +"XPAcrossRoomPKRuleView1" = "1)只有牌照房房主和超管才可以发起跨房pk,一次只能选择一个牌照房发起;\n2)只有房主和超管才可以接受或拒绝跨房pk请求,若10秒内不点击pk邀请弹窗,弹窗消失,视为自动拒绝;\n3)发起pk时需选择pk时间和pk对象,自定义时间下限为5,上限为180,只能填写整数;\n4)pk发起后,未到pk时间无法自行结束,若有特殊情况需提前结束可联繫客服,但本场pk不算胜负"; + +"XPAcrossRoomPKEmptyTableViewCell0" = "暂无搜索结果"; + +"XPAcrossRoomPKSelectRoomView0" = "没有更多房间了"; +"XPAcrossRoomPKSelectRoomView1" = "请输入要搜索的厅"; +"XPAcrossRoomPKSelectRoomView2" = "请输入厅的"; +"XPAcrossRoomPKSelectRoomView3" = "确认选择"; + +"XPMiniRoomView0" = "您被管理员踢出直播间"; +"XPMiniRoomView1" = "您被管理员踢出直播间"; +"XPMiniRoomView2" = "房主或管理员拉你上麦"; +"XPMiniRoomView3" = "你已被房主或管理员拉上麦,但并未开启麦克风。如需要说话,请打开麦克风"; + +"XPUserCardPresenter1" = "房主位"; +"XPUserCardPresenter2" = "%d号男神位"; +"XPUserCardPresenter3" = "%d号女神位"; +"XPUserCardPresenter4" = "%d号麦位"; +"XPUserCardPresenter6" = "开麦"; +"XPUserCardPresenter9" = "抱Ta下麦"; +"XPUserCardPresenter11" = "解锁"; +"XPUserCardPresenter12" = "清除礼物值"; +"XPUserCardPresenter13" = "送礼物"; +"XPUserCardPresenter14" = "私聊"; +"XPUserCardPresenter15" = "关注"; +"XPUserCardPresenter16" = "已关注"; +"XPUserCardPresenter17" = "踢出房间"; +"XPUserCardPresenter18" = "设置管理员"; +"XPUserCardPresenter19" = "取消管理员"; +"XPUserCardPresenter20" = "拉入黑名单"; + +"XPUserCardViewController0" = "用户不在房间内"; +"XPUserCardViewController1" = "用户已经被拉黑了"; +"XPUserCardViewController2" = "清除成功"; +"XPUserCardViewController3" = "操作成功"; +"XPUserCardViewController4" = "该用户为%@贵族,只有房主才可以踢出哦"; +"XPUserCardViewController5" = "该用户为%@贵族\n确认是否要将其踢出房间"; +"XPUserCardViewController6" = "游戏模式下默认该玩家退出游戏是否要将此用户踢出房间"; +"XPUserCardViewController7" = "游戏模式下默认该玩家退出游戏是否要将此用户踢出房间"; +"XPUserCardViewController8" = "是否需要将%@踢出房间"; +"XPUserCardViewController9" = "操作提醒"; +"XPUserCardViewController10" = "该用户为%@贵族,只有房主才可以踢出哦"; +"XPUserCardViewController11" = "该用户为%@贵族\n确认是否要将其拉黑"; +"XPUserCardViewController12" = "游戏模式下默认该玩家退出游戏是否要将此用户踢出房间"; +"XPUserCardViewController13" = "是否将%@加入黑名单?加入后他将无法进入此房间游戏模式下默认该玩家退出游戏"; +"XPUserCardViewController14" = "你正在拉黑"; +"XPUserCardViewController15" = "拉黑后他将无法加入此房间"; +"XPUserCardViewController16" = "房间公屏已关闭"; +"XPUserCardViewController17" = "游戏中不可主动下麦"; +"XPUserCardViewController18" = "抱Ta下麦后默认该玩家退出游戏,是否继续"; +"XPUserCardViewController19" = "确认选择%d号嘉宾吗"; +"XPUserCardViewController20" = "该选择不能被取消修改"; +"XPUserCardViewController21" = "複制成功"; +"XPUserCardViewController22" = "举报"; +"XPUserCardViewController23" = "选择心动"; + +"XPRoomInsideRecommendEmptyCell0" = "努力寻找合适房间中"; + +"XPRoomRecommendView0" = "为你推荐"; +"XPRoomRecommendView3" = "举报房间"; + +"XPAnchorFansTeamEntranceView0" = "粉丝团"; +"XPAnchorFansTeamEntranceView1" = "开通粉丝团"; +"XPAnchorFansTeamEntranceView2" = "粉丝"; +"XPAnchorFansTeamEntranceView3" = "加入粉丝团"; +"XPAnchorFansTeamEntranceView4" = "TA暂未开通粉丝团"; + +"XPAnchorFansTaskTableViewCell0" = "已完成"; + +"XPAnchorFansTeamViewController0" = "·%ld人"; +"XPAnchorFansTeamViewController1" = "加入粉丝团成功"; + +"XPAnchorFansTaskViewController0" = "·%ld人"; +"XPAnchorFansTaskViewController1" = "亲密值"; +"XPAnchorFansTaskViewController2" = "退出粉丝团后24小时内不能再次加入,确定退出吗"; +"XPAnchorFansTaskViewController3" = "查看粉丝团说明"; +"XPAnchorFansTaskViewController4" = "退出粉丝团"; + +"XPAnchorAudienceUpMicView0" = "TA悄悄点击了嘉宾位置\n需要邀请TA上麦互动吗"; +"XPAnchorAudienceUpMicView1" = "取消"; +"XPAnchorAudienceUpMicView2" = "确认"; + +"XPRoomAnchorInfoCardView0" = "已关注"; +"XPRoomAnchorInfoCardView1" = "点击加关注,下次直播不迷路"; +"XPRoomAnchorInfoCardView2" = "关注"; + +"XPRoomAnchorRankEnterView0" = "小时榜"; + +"XPRoomFunctionContainerView0" = "开始选择"; +"XPRoomFunctionContainerView1" = "公佈心动"; +"XPRoomFunctionContainerView2" = "结束本轮"; +"XPRoomFunctionContainerView3" = "嘉宾交流"; +"XPRoomFunctionContainerView4" = "主播榜"; +"XPRoomFunctionContainerView5" = "房间榜"; +"XPRoomFunctionContainerView6" = "主播榜"; +"XPRoomFunctionContainerView7" = "房间榜"; +"XPRoomFunctionContainerView8" = "进入心动选人环节"; +"XPRoomFunctionContainerView9" = "进入心动公佈环节"; +"XPRoomFunctionContainerView10" = "结束本轮,同时清空魅力值"; +"XPRoomFunctionContainerView11" = "进入嘉宾交流环节"; +"XPRoomFunctionContainerView12" = "暂未设置话题"; +"XPRoomFunctionContainerView13" = "开始选择"; + +"XPRoomBackContainerView0" = "贵族专属背景图加载失败"; +"XPRoomBackContainerView1" = "个播背景图加载失败"; + +"XPRoomRankEntranceView0" = "房间榜"; + +"XPRoomDatingVipUpMicView0" = "1.每轮相亲在“嘉宾交流”阶段累积送礼满999鑽石且送礼价值最高的用户自动登上VIP席位;\n\n2.若出现多个满足上VIP席位要求的用户,VIP席位最终由送礼价值最高的用户获得,若送礼价值相同以最先达到该值的用户为准;\n\n3.VIP席位的用户可选择是否下麦,其他用户不可因此代替坐上席位;\n\n4.用户只能在“嘉宾交流”阶段抢夺VIP席位,“嘉宾交流”阶段后直到结束本轮前,即使送出超过之前VIP总礼物价值也不能换人;\n\n5.每轮相亲结束后VIP席位清空,下一轮重新开始抢位"; + +"XPNewUserRoomGiftView0" = "获得新人礼物"; +"XPNewUserRoomGiftView1" = "已放入背包,儘快使用吧"; + +"XPMoreMenuPresenter1" = "PK模式"; +"XPMoreMenuPresenter3" = "开启礼物值"; +"XPMoreMenuPresenter5" = "开启我的特效"; +"XPMoreMenuPresenter6" = "心愿礼物"; +"XPMoreMenuPresenter8" = "相亲房"; +"XPMoreMenuPresenter10" = "跨房"; +"XPMoreMenuPresenter12" = "主播"; +"XPMoreMenuPresenter13" = "结束"; +"XPMoreMenuPresenter14" = "主播PK中"; +"XPMoreMenuPresenter15" = "结束"; +"XPMoreMenuPresenter16" = "结束"; +"XPMoreMenuPresenter17" = "PK匹配中"; +"XPMoreMenuPresenter19" = "关闭公屏"; +"XPMoreMenuPresenter20" = "清空公屏"; +"XPMoreMenuPresenter21" = "房间设置"; +"XPMoreMenuPresenter22" = "邀请粉丝"; +"XPMoreMenuPresenter23" = "发佈广播"; +"XPMoreMenuPresenter24" = "红包"; +"XPMoreMenuPresenter25" = "扬声器"; + +"XPRoomMoreMenuViewController0" = "开启礼物值成功"; +"XPRoomMoreMenuViewController1" = "关闭礼物值成功"; +"XPRoomMoreMenuViewController2" = "相亲模式中不能关闭房间礼物值"; +"XPRoomMoreMenuViewController3" = "关闭礼物值将会清除当前麦上所有礼物值数据,确认关闭吗"; +"XPRoomMoreMenuViewController4" = "礼物特效已开启"; +"XPRoomMoreMenuViewController5" = "礼物特效已关闭"; +"XPRoomMoreMenuViewController6" = "跨房PK中不可开启相亲模式"; +"XPRoomMoreMenuViewController7" = "房间PK中不可开启相亲模式"; +"XPRoomMoreMenuViewController8" = "开启相亲模式?开启同时现有礼物值将被清空"; +"XPRoomMoreMenuViewController9" = "开启"; +"XPRoomMoreMenuViewController10" = "提示"; +"XPRoomMoreMenuViewController11" = "关闭相亲模式"; +"XPRoomMoreMenuViewController12" = "关闭"; +"XPRoomMoreMenuViewController13" = "相亲中不可开启跨房"; +"XPRoomMoreMenuViewController14" = "PK中不可以开启跨房"; +"XPRoomMoreMenuViewController15" = "正在跨房PK中"; +"XPRoomMoreMenuViewController16" = "取消匹配"; +"XPRoomMoreMenuViewController17" = "提示"; +"XPRoomMoreMenuViewController18" = "确定要清空公屏消息吗?\n(清空后不可恢复哦"; +"XPRoomMoreMenuViewController19" = "确定"; +"XPRoomMoreMenuViewController20" = "相亲中不可以开启PK模式"; +"XPRoomMoreMenuViewController21" = "跨房PK中不可以开启PK模式"; + +"XPRoomInviteFansView0" = "今日剩馀%d次"; +"XPRoomInviteFansView1" = "今日次数已用完"; +"XPRoomInviteFansView2" = "确认邀请后会给收藏该房间的%ld位用户发送提醒"; +"XPRoomInviteFansView3" = "确认邀请"; +"XPRoomInviteFansView4" = "%02d分%02d秒后可邀请"; +"XPRoomInviteFansView5" = "邀请房间粉丝"; +"XPRoomInviteFansView6" = "每日发送次数不可超过5次"; +"XPRoomInviteFansView7" = "1小时内限发送一次邀请"; +"XPRoomInviteFansView8" = "确认邀请"; + +"XPRoomMenuContainerView0" = "房间公屏已关闭"; +"XPRoomMenuContainerView1" = "PK已开始暂时无法排麦"; +"XPRoomMenuContainerView2" = "说点什麽"; +"XPRoomMenuContainerView3" = "快给大家打个招呼吧"; + +"XPRoomSendTextView0" = "请输入消息"; +"XPRoomSendTextView1" = "发送"; + +"DatingStageView0" = "你已经在麦上了"; +"DatingStageView1" = "需要排麦才可以上麦哦"; +"DatingStageView3" = "开麦"; +"DatingStageView4" = "上麦"; + +"StageView0" = "房主或管理员拉你上麦"; +"StageView1" = "你已被房主或管理员拉上麦,但并未开启麦克风。如需要说话,请打开麦克风"; +"StageView2" = "移出坑位"; +"StageView3" = "请先关闭离开模式"; +"StageView4" = "该麦位已经有人了哦"; +"StageView5" = "上麦"; +"StageView6" = "入驻坑位"; +"StageView8" = "切换为自由麦"; +"StageView10" = "解锁"; +"StageView12" = "解锁坑位"; +"StageView14" = "开麦"; +"StageView16" = "开启麦位话筒"; +"StageView18" = "抱Ta上麦"; +"StageView19" = "你已经在麦上了"; +"StageView20" = "需要排麦才可以上麦哦"; +"StageView21" = "正在上麦"; + +"AnchorStageView1" = "解锁"; +"AnchorStageView3" = "开麦"; +"AnchorStageView4" = "抱Ta上麦"; +"AnchorStageView5" = "你已经在麦上了喔"; +"AnchorStageView6" = "让主播抱你上麦进行更多互动吧"; + +"SocialMicroView0" = "老闆位"; + +"LittleGameMicroView0" = "房主"; +"LittleGameMicroView1" = "未准备"; +"LittleGameMicroView2" = "已准备"; +"LittleGameMicroView3" = "游戏中"; +"LittleGameMicroView4" = "未准备"; + +"MicroGiftValueView0" = "9999万"; +"MicroGiftValueView1" = "%lld万"; + +"MicroView0" = "号麦位"; +"MicroView1" = "坑位"; +"MicroView2" = "红队"; +"MicroView3" = "蓝队"; +"MicroView4" = "离开"; + +"MicroDatingProgressView0" = "嘉宾交流"; +"MicroDatingProgressView1" = "嘉宾交流"; +"MicroDatingProgressView2" = "心动选人"; +"MicroDatingProgressView3" = "公佈心动"; +"MicroDatingProgressView4" = "嘉宾交流"; + +"DatingMicroView0" = "主持人"; +"DatingMicroView1" = "号女神位"; +"DatingMicroView2" = "号男神位"; +"DatingMicroView3" = "选%d号"; +"DatingMicroView4" = "未选择"; +"DatingMicroView5" = "选"; +"DatingMicroView6" = "选%d号"; +"DatingMicroView7" = "未选择"; +"DatingMicroView8" = "选%d号"; +"DatingMicroView9" = "已选择"; +"DatingMicroView10" = "未选择"; +"DatingMicroView11" = "选"; +"DatingMicroView12" = "选%d号"; +"DatingMicroView13" = "已选择"; +"DatingMicroView14" = "已选择"; +"DatingMicroView15" = "未选择"; +"DatingMicroView16" = "选%d号"; +"DatingMicroView17" = "未选择"; +"DatingMicroView18" = "选"; +"DatingMicroView19" = "选%d号"; +"DatingMicroView20" = "未选择"; +"DatingMicroView21" = "未选择"; + +"AnchorPKStageView0" = "规则"; + +"RoomHeaderView0" = "退出聊天室"; +"RoomHeaderView1" = "举报该聊天室"; +"RoomHeaderView2" = "您的请求我们已经收到,我们将儘快处理"; +"RoomHeaderView3" = "在线"; +"RoomHeaderView4" = "在线"; +"RoomHeaderView5" = "在线"; +"RoomHeaderView6" = "朋友圈"; +"RoomHeaderView7" = "微信好友"; +"RoomHeaderView8" = "QQ好友"; +"RoomHeaderView9" = "QQ空间"; +"RoomHeaderView10" = "聆听声音,分享快乐"; +"RoomHeaderView11" = "%@ 这个房间很好玩,推荐给你,快来和我一起玩吧"; +"RoomHeaderView12" = "收藏成功"; +"RoomHeaderView13" = "分享成功"; + +"XPRoomMorePlayPresenter0" = "航海"; + +"XPRoomMorePlayViewController0" = "糖果树"; +"XPRoomMorePlayViewController1" = "航海"; + +"XPReleaseRadioViewController0" = "发佈成功"; +"XPReleaseRadioViewController1" = "发佈后,%zd分钟内不可再发佈广播"; +"XPReleaseRadioViewController2" = "输入内容不能少于%zd个字,请文明发言哦"; +"XPReleaseRadioViewController3" = "发佈广播"; +"XPReleaseRadioViewController4" = "你将在首页发佈一条广播,邀请其他用户进入当前房间"; +"XPReleaseRadioViewController5" = "广播内容"; +"XPReleaseRadioViewController6" = "今日剩馀发佈次数"; +"XPReleaseRadioViewController7" = "输入内容不能少于5个字,请文明发言哦"; +"XPReleaseRadioViewController8" = "发佈"; +"XPReleaseRadioViewController9" = "发佈后,5分钟内不可再发佈广播"; +"XPReleaseRadioViewController10" = "后可以再次发佈"; + +"XPRoomTransferMusicViewController0" = "歌曲传输"; +"XPRoomTransferMusicViewController1" = "(您正在4G/3G/2G网络下,暂无法使用"; +"XPRoomTransferMusicViewController2" = "请连接"; +"XPRoomTransferMusicViewController3" = "您当前无网络"; +"XPRoomTransferMusicViewController4" = "请连接"; +"XPRoomTransferMusicViewController5" = "已连接"; +"XPRoomTransferMusicViewController6" = "您当前无网络"; +"XPRoomTransferMusicViewController7" = "请连接"; +"XPRoomTransferMusicViewController8" = "您正在4G/3G/2G网络下,暂无法使用"; +"XPRoomTransferMusicViewController9" = "请连接"; +"XPRoomTransferMusicViewController10" = "已连接"; +"XPRoomTransferMusicViewController11" = "未知歌手"; +"XPRoomTransferMusicViewController12" = "未知"; +"XPRoomTransferMusicViewController13" = "已导入%ld首歌曲"; +"XPRoomTransferMusicViewController14" = "已连接"; +"XPRoomTransferMusicViewController15" = "如图:请在同一WiFi下电脑浏览器上输入"; +"XPRoomTransferMusicViewController16" = "可在打开的网页上导入和删除歌曲\n歌曲导入完成前,请不要退出当前页面"; +"XPRoomTransferMusicViewController17" = "已导入0首歌曲"; +"XPRoomTransferMusicViewController18" = "保存"; + +"XPRoomBackMusicPlayerView1" = "列表循环"; +"XPRoomBackMusicPlayerView2" = "暂无音乐播放"; +"XPRoomBackMusicPlayerView3" = "暂无音乐播放"; +"XPRoomBackMusicPlayerView4" = "暂无音乐播放"; + +"XPMusicLibraryPlayView0" = "暂无歌曲"; +"XPMusicLibraryPlayView1" = "暂无歌曲"; + +"XPRoomMusicVoiceSettingView0" = "人声"; +"XPRoomMusicVoiceSettingView1" = "音乐"; + +"XPRoomMusicLibraryEmptyTableViewCell0" = "暂无数据"; +"XPRoomMusicLibraryEmptyTableViewCell1" = "传输更多歌曲"; + +"XPRoomMusicLibraryViewController0" = "我的乐库"; +"XPRoomMusicLibraryViewController1" = "共%ld首歌曲"; +"XPRoomMusicLibraryViewController2" = "删除"; + +"XPRoomMessageContainerView0" = "有%lu人@你"; +"XPRoomMessageContainerView1" = "有%lu人@你"; +"XPRoomMessageContainerView2" = "有%zd人@你"; +"XPRoomMessageContainerView3" = "[房间公告"; +"XPRoomMessageContainerView4" = "[房间公告"; +"XPRoomMessageContainerView5" = "可点击查看本房间公告"; +"XPRoomMessageContainerView6" = "底部有新消息"; +"XPRoomMessageContainerView7" = "有人@你"; + +"XPRoomMessageHeaderView0" = "平台严禁未成年人直播或打赏,倡导绿色互动,禁止宣传及发佈政治、低俗、暴力、色情等违规违法内容,严禁违规交易和诱导欺诈用户,如有违规将对账号进行封禁,发现请及时举报"; + +"XPRoomMessageParser0" = "我"; +"XPRoomMessageParser1" = " 驾着"; +"XPRoomMessageParser2" = "根据首页推荐"; +"XPRoomMessageParser3" = "跟随"; +"XPRoomMessageParser4" = "接受"; +"XPRoomMessageParser5" = "的邀请"; +"XPRoomMessageParser6" = "进入了房间"; +"XPRoomMessageParser7" = "大驾光临,大家欢迎"; +"XPRoomMessageParser8" = "相亲玩法已开启,请点击主持人麦位选择主持人"; +"XPRoomMessageParser9" = "打开"; +"XPRoomMessageParser10" = "的红包领取了"; +"XPRoomMessageParser11" = "%@鑽石"; +"XPRoomMessageParser12" = "厉害了"; +"XPRoomMessageParser13" = "在航海冒险中获得"; +"XPRoomMessageParser14" = "恭喜"; +"XPRoomMessageParser15" = "恭喜"; +"XPRoomMessageParser16" = "在"; +"XPRoomMessageParser17" = "通过"; +"XPRoomMessageParser18" = ",开出"; +"XPRoomMessageParser19" = "房主/管理员邀请"; +"XPRoomMessageParser20" = "进入"; +"XPRoomMessageParser21" = "红队"; +"XPRoomMessageParser22" = "蓝队"; +"XPRoomMessageParser23" = "管理员关闭了PK模式"; +"XPRoomMessageParser24" = "关闭了"; +"XPRoomMessageParser25" = "平局"; +"XPRoomMessageParser26" = "本场PK结果:%@!\nPK值"; +"XPRoomMessageParser27" = "平局"; +"XPRoomMessageParser28" = "本场PK结果:%@!\nPK值"; +"XPRoomMessageParser29" = "平局"; +"XPRoomMessageParser30" = "本场PK结果:%@!\nPK值"; +"XPRoomMessageParser31" = "蓝队守护者:%@ \n 蓝队守护值: %@ \n 红队守护者: %@ \n 红队守护值"; +"XPRoomMessageParser32" = "红队"; +"XPRoomMessageParser33" = "蓝队"; +"XPRoomMessageParser34" = "本场PK结果:%@胜利!\nPK值%@ \n 胜利方战斗值"; +"XPRoomMessageParser35" = "本场PK结果:%@胜利! \nPK值%@ \n %@守护者:%@ \n %@守护值"; +"XPRoomMessageParser36" = "本场PK结果:%@胜利! \nPK值%@ \n %@守护值"; +"XPRoomMessageParser37" = "获得礼物多的团队获胜"; +"XPRoomMessageParser38" = "送礼人数多的团队获胜"; +"XPRoomMessageParser39" = "管理髮起房间PK,本次PK时间为%.0f秒"; +"XPRoomMessageParser40" = "PK开始了,本次PK时间为%.0f秒,快给喜欢的选手投票吧"; +"XPRoomMessageParser41" = "获得礼物多的团队获胜"; +"XPRoomMessageParser42" = "送礼人数多的团队获胜"; +"XPRoomMessageParser43" = "管理员重新开始PK,本次PK时间为%.0f秒"; +"XPRoomMessageParser44" = "收藏了房间"; +"XPRoomMessageParser45" = "消息"; +"XPRoomMessageParser46" = "管理员已关闭聊天公屏"; +"XPRoomMessageParser47" = "管理员已开启聊天公屏"; +"XPRoomMessageParser48" = "消息"; +"XPRoomMessageParser49" = "管理员已开启房间内礼物特效"; +"XPRoomMessageParser50" = "管理员已关闭房间内礼物特效,点击底部"; +"XPRoomMessageParser51" = "图标即可开启"; +"XPRoomMessageParser52" = "消息"; +"XPRoomMessageParser53" = "房主"; +"XPRoomMessageParser54" = "管理员"; +"XPRoomMessageParser55" = "已清空房间公屏消息"; +"XPRoomMessageParser57" = "女"; +"XPRoomMessageParser58" = "%d号%@嘉宾"; +"XPRoomMessageParser59" = "本轮你选择了"; +"XPRoomMessageParser60" = "作为你的心动对象"; +"XPRoomMessageParser61" = "恭喜"; +"XPRoomMessageParser62" = "和"; +"XPRoomMessageParser63" = "牵手成功,让我们见证他们幸福的开端"; +"XPRoomMessageParser64" = "的心动对象是"; +"XPRoomMessageParser65" = "未选择心动对象"; +"XPRoomMessageParser66" = "管理员"; +"XPRoomMessageParser67" = "开启了"; +"XPRoomMessageParser68" = "排麦模式"; +"XPRoomMessageParser69" = "关闭了"; +"XPRoomMessageParser70" = "排麦模式"; +"XPRoomMessageParser71" = "设置"; +"XPRoomMessageParser72" = "%d麦"; +"XPRoomMessageParser73" = "为自由麦"; +"XPRoomMessageParser74" = "关闭了"; +"XPRoomMessageParser75" = "%d麦"; +"XPRoomMessageParser76" = "自由麦"; +"XPRoomMessageParser77" = "厉害了"; +"XPRoomMessageParser78" = "摘下糖果获得"; +"XPRoomMessageParser79" = "(仅自己可见"; +"XPRoomMessageParser80" = "贵族降临!恭喜"; +"XPRoomMessageParser81" = "开通贵族系统,获得"; +"XPRoomMessageParser82" = "贵族身份"; +"XPRoomMessageParser83" = "全场欢呼!!恭喜"; +"XPRoomMessageParser84" = "的贵族身份成功升级为"; +"XPRoomMessageParser85" = "恭喜"; +"XPRoomMessageParser86" = "您"; +"XPRoomMessageParser87" = "恭喜"; +"XPRoomMessageParser88" = "开通粉丝团成功"; +"XPRoomMessageParser89" = "恭喜"; +"XPRoomMessageParser90" = "加入粉丝团"; +"XPRoomMessageParser91" = "已退出粉丝团"; +"XPRoomMessageParser92" = "被"; +"XPRoomMessageParser93" = "请出房间"; +"XPRoomMessageParser94" = "关进小黑屋"; +"XPRoomMessageParser95" = "请下麦"; +"XPRoomMessageParser96" = "分享了房间"; +"XPRoomMessageParser97" = "关注了房主"; +"XPRoomMessageParser98" = " 打赏"; +"XPRoomMessageParser99" = " 全麦打赏"; +"XPRoomMessageParser100" = " 送出"; +"XPRoomMessageParser101" = " 全麦送出"; +"XPRoomMessageParser102" = " 给"; +"XPRoomMessageParser103" = " 爆出了"; +"XPRoomMessageParser104" = "价值"; +"XPRoomMessageParser105" = "鑽石的礼物"; +"XPRoomMessageParser106" = "送出"; +"XPRoomMessageParser107" = "给"; +"XPRoomMessageParser108" = "爆出了"; +"XPRoomMessageParser109" = "价值"; +"XPRoomMessageParser110" = "鑽石的礼物"; +"XPRoomMessageParser111" = " 打赏"; + +"XPGiftBarView0" = "馀额"; +"XPGiftBarView1" = "充值"; +"XPGiftBarView2" = "赠送"; +"XPGiftBarView3" = "赠送中"; +"XPGiftBarView4" = "赠送"; +"XPGiftBarView5" = "请输入赠送数额"; +"XPGiftBarView6" = "确定"; + +"XPGiftUsersView0" = "全麦送"; +"XPGiftUsersView1" = "全麦送"; + +"XPGiftHeadTypeView0" = "首充有礼"; +"XPGiftHeadTypeView1" = "首充有礼"; +"XPGiftHeadTypeView2" = "送礼"; +"XPGiftHeadTypeView3" = "互动"; +"XPGiftHeadTypeView4" = "贵族中心"; + +"XPGiftLuckyGiftBroadcastCell0" = "恭喜 "; +"XPGiftLuckyGiftBroadcastCell1" = "开出%@获得 "; +"XPGiftLuckyGiftBroadcastView0" = "玩法说明"; + +"XPSendGiftView0" = "只能全部赠送给一人"; +"XPSendGiftView1" = "只能全部赠送给一人"; +"XPSendGiftView2" = "请选择至少一个人"; +"XPSendGiftView3" = "发送涂鸦礼物:%@成功"; +"XPSendGiftView4" = "尚未达到赠送%@所需要的贵族等级哦\n所需贵族等级"; + +"XPGraffitiGiftView0" = "最多只能画300个呦"; +"XPGraffitiGiftView1" = "至少画10个才能送出"; +"XPGraffitiGiftView2" = "已画%@个,需花费%@鑽石"; +"XPGraffitiGiftView3" = "滑动手指,绘制图形"; +"XPGraffitiGiftView4" = "至少画10个才能送出"; + +"XPGiftEmptyCollectionViewCell0" = "背包暂无内容"; + +"XPGiftUserCollectionViewCell0" = "房主位"; + +"XPGiftTwelveStarBroadcastView0" = "上期星座月%@星主"; +"XPGiftTwelveStarBroadcastView1" = "上期星座月天蝎座星主"; +"XPGiftTwelveStarBroadcastView2" = "昵称"; +"XPGiftTwelveStarBroadcastView3" = "活动详情"; +"XPGiftTwelveStarBroadcastView4" = "星座物语,限定开启星座月"; + +"XPGiftInfoView0" = "总价值"; +"XPGiftInfoView1" = "暂时木有礼物"; +"XPGiftInfoView2" = "礼物"; +"XPGiftInfoView3" = "幸运"; +"XPGiftInfoView4" = "周星礼物"; +"XPGiftInfoView5" = "背包"; +"XPGiftInfoView6" = "涂鸦礼物"; +"XPGiftInfoView7" = "惩罚礼物"; +"XPGiftInfoView8" = "人气"; +"XPGiftInfoView9" = "贵族"; +"XPGiftCountView0" = "其他数额"; +"XPGiftCountView1" = "全部"; +"XPGiftCountView2" = "其他数额"; +"XPGiftCountView3" = "一心一意"; +"XPGiftCountView4" = "十全十美"; +"XPGiftCountView5" = "一切顺利"; +"XPGiftCountView6" = "长长久久"; +"XPGiftCountView7" = "要抱抱"; +"XPGiftCountView8" = "我爱你"; +"XPGiftCountView9" = "一生一世"; + +"XPGiftWeekStarBroadcastView0" = "虚位以待"; +"XPGiftWeekStarBroadcastView1" = "虚位以待"; +"XPGiftWeekStarBroadcastView2" = "本周该礼物冠名者"; +"XPGiftWeekStarBroadcastView3" = "虚位以待"; +"XPGiftWeekStarBroadcastView4" = "本周该礼物星神豪"; +"XPGiftWeekStarBroadcastView5" = "虚位以待"; + +"XPRoomFaceViewController0" = "加载失败请重试"; +"XPRoomFaceViewController1" = "尚未达到发送%@所需贵族等级,\n 所需贵族等级"; +"XPRoomFaceViewController2" = "表情"; +"XPRoomFaceViewController3" = "贵族表情"; + +"XPSailingAnimationView0" = "厉害了"; +"XPSailingAnimationView1" = "在航海冒险中获得"; + +"XPSailingViewController0" = "消耗%@燃油连续探索"; +"XPSailingViewController1" = "消耗1燃油连续探索"; +"XPSailingViewController2" = "不展示结果弹框"; + +"XPSailingRankSubView0" = "没有更多房间了"; + +"XPSailingEmptyTableViewCell0" = "暂无数据"; + +"XPSailingRankView1" = "昨日榜单"; + +"XPSailingBuyFuelView0" = "当前燃油不足 \n 可参与活动获得燃油哦"; + +"XPArrangeMicViewController0" = "没有更多数据了"; +"XPArrangeMicViewController1" = "立即邀请"; +"XPArrangeMicViewController2" = "点击报名"; +"XPArrangeMicViewController3" = "报名蓝队"; +"XPArrangeMicViewController4" = "报名红队"; +"XPArrangeMicViewController5" = "当前无人排麦"; +"XPArrangeMicViewController6" = "报名才能排麦哦"; +"XPArrangeMicViewController7" = "当前排麦的人数"; +"XPArrangeMicViewController8" = "我在队列中排列位置"; +"XPArrangeMicViewController9" = "报名才能排麦哦"; +"XPArrangeMicViewController10" = "取消报名"; +"XPArrangeMicViewController11" = "取消报名"; +"XPArrangeMicViewController12" = "麦上无空位了"; +"XPArrangeMicViewController14" = "立即报名,你就是排麦第一人啦"; +"XPArrangeMicViewController15" = "朋友圈"; +"XPArrangeMicViewController16" = "微信好友"; +"XPArrangeMicViewController17" = "QQ好友"; +"XPArrangeMicViewController18" = "QQ空间"; +"XPArrangeMicViewController19" = "取消报名后再次报名需要重新排麦哦!确认取消报名吗"; +"XPArrangeMicViewController20" = "已经在麦上不需要报名啦"; +"XPArrangeMicViewController21" = "已经在麦上不需要报名啦"; +"XPArrangeMicViewController22" = "已经在麦上不需要报名啦"; +"XPArrangeMicViewController23" = "报名男神"; +"XPArrangeMicViewController24" = "报名女神"; +"XPArrangeMicViewController25" = "点击报名"; + +"XPArrangeMicTableViewCell1" = "抱上女神"; +"XPArrangeMicTableViewCell3" = "抱上红队"; +"XPArrangeMicTableViewCell4" = "抱上麦"; +"XPArrangeMicTableViewCell6" = "已选女神"; +"XPArrangeMicTableViewCell8" = "已选红队"; +"XPArrangeMicTableViewCell9" = "排麦中"; + +"XPArrangeMicEmptyTableViewCell0" = "暂无数据"; + +"XPFirstRechargeSuccessView0" = "装扮类物品可进入“我的一我的装扮”使用哦"; +"XPFirstRechargeSuccessView1" = "我知道了"; + +"XPRoomGiftCompoundView0" = "恭喜"; + +"XPRoomNobleLevelUpView0" = "引爆全场!恭喜"; +"XPRoomNobleLevelUpView1" = "贵族身份升级为"; + +"XPRoomCandyGiftView0" = "厉害了! "; +"XPRoomCandyGiftView1" = "通过寻爱之旅获取 "; + +"XPRoomLicneseHourRankView0" = "恭喜"; +"XPRoomLicneseHourRankView1" = "去围观"; + +"XPRoomEnterHideTipView0" = "你已隐身进入房间"; + +"XPRoomAnimationView0" = "【%@】进入了房间"; + +"XPRoomGiftBannerView0" = ",%ld麦"; +"XPRoomGiftBannerView1" = "%ld麦"; +"XPRoomGiftBannerView2" = "全麦"; +"XPRoomGiftBannerView3" = ",%ld麦"; +"XPRoomGiftBannerView4" = "%ld麦"; +"XPRoomGiftBannerView5" = "全麦"; +"XPRoomGiftBannerView6" = "赠送"; + +"XPRoomYearActivityView0" = "送给"; + +"XPRoomAnchorRankBannerView0" = "恭喜"; + +"XPRoomLuckyBigPrizeView0" = "恭喜"; +"XPRoomLuckyBigPrizeView1" = "在%@幸运礼物中欧气爆棚开出了价值"; + +"XPRoomActivityPlayView0" = "更多玩法"; + +"XPRoomQuickMessageContainView0" = "你发送的太频繁啦,请稍后再试"; + +"AnchorRoomSrollTipView0" = "向上滑动发现更多精彩房间"; + +"XPRoomRedPacketPwdView0" = "请输入支付密码"; +"XPRoomRedPacketPwdView1" = "忘记密码"; + +"XPRoomSendRedPacketViewController0" = "红包数量不能小于1或大于"; +"XPRoomSendRedPacketViewController1" = "鑽石数量不能小于100或大于"; +"XPRoomSendRedPacketViewController2" = "鑽石数必须为10的倍数"; +"XPRoomSendRedPacketViewController3" = "发送成功"; +"XPRoomSendRedPacketViewController4" = "恭喜发财,大吉大利"; +"XPRoomSendRedPacketViewController5" = "红包总金额不低于100鑽石,且必须为10的倍数"; +"XPRoomSendRedPacketViewController6" = "红包总金额不低于1000鑽石,且必须为100的倍数"; +"XPRoomSendRedPacketViewController7" = "厅内红包"; +"XPRoomSendRedPacketViewController8" = "全服红包"; +"XPRoomSendRedPacketViewController9" = "红包个数"; +"XPRoomSendRedPacketViewController10" = "个"; +"XPRoomSendRedPacketViewController11" = "总鑽石数"; +"XPRoomSendRedPacketViewController12" = "鑽石"; +"XPRoomSendRedPacketViewController13" = "红包总金额不低于100鑽石,且必须为10的倍数"; +"XPRoomSendRedPacketViewController14" = "未抢完的红包将在30分钟后返还你的钱包"; +"XPRoomSendRedPacketViewController15" = "恭喜发财,大吉大利"; +"XPRoomSendRedPacketViewController16" = "充值鑽石"; + +"XPOpenRedPacketCell0" = "我"; +"XPOpenRedPacketCell1" = "获取红包用户"; +"XPOpenRedPacketCell2" = "0鑽石"; + +"XPReceiveRedPacketView0" = "厅内的"; +"XPReceiveRedPacketView1" = "已存入钱包,请到我的收益确认"; +"XPReceiveRedPacketView2" = "抢完了,下次早点来哦"; +"XPReceiveRedPacketView3" = "的红包"; +"XPReceiveRedPacketView4" = "领取%@/%@个"; +"XPReceiveRedPacketView5" = "抢完了,下次早点来哦"; + +"XPRoomViewController0" = "抱歉,您暂时无法进入该房间"; +"XPRoomViewController1" = "%@的房间"; +"XPRoomViewController2" = "房主已下线"; +"XPRoomViewController3" = "您已被管理员拉黑"; +"XPRoomViewController4" = "已经到底啦~自动为您返回当前房间"; +"XPRoomViewController5" = "已经到顶啦~自动为您返回当前房间"; +"XPRoomViewController6" = "%@的房间"; +"XPRoomViewController7" = "房主已下线"; +"XPRoomViewController8" = "您被管理员踢出直播间"; +"XPRoomViewController9" = "您已被管理员拉黑"; +"XPRoomViewController10" = "消息中可能含有违规信息,请停止发送类似信息"; +"XPRoomViewController11" = "退出房间后将退出目前排麦,再次进入需要重新排麦,确认退出房间吗"; +"XPRoomViewController12" = "退出房间后将退出目前排麦,再次进入需要重新排麦,确认退出房间吗"; +"XPRoomViewController13" = "已经到顶啦~自动为您返回当前房间"; + +"XPRoomSettingPresenter0" = "房间名"; +"XPRoomSettingPresenter1" = "房间上锁"; +"XPRoomSettingPresenter2" = "房间分类"; +"XPRoomSettingPresenter3" = "房间标签"; +"XPRoomSettingPresenter4" = "管理员"; +"XPRoomSettingPresenter5" = "黑名单"; +"XPRoomSettingPresenter6" = "房间礼物特效"; +"XPRoomSettingPresenter7" = "房间公屏"; +"XPRoomSettingPresenter8" = "排麦模式"; +"XPRoomSettingPresenter9" = "离开模式"; +"XPRoomSettingPresenter10" = "更新房间信息失败"; + +"XPRoomTopicPresenter0" = "更新房间信息失败"; + +"XPRoomTopicAlertView0" = "暂无设置话题"; +"XPRoomTopicAlertView1" = "暂未设置话题内容"; +"XPRoomTopicAlertView2" = "关闭"; + +"XPRoomTagListViewController0" = "快给您的房间选个分类吧"; +"XPRoomTagListViewController1" = "快给您的房间选个标签吧"; +"XPRoomTagListViewController2" = "完成"; + +"XPRoomTagListView0" = "房间分类"; +"XPRoomTagListView1" = "房间标签"; +"XPRoomTagListView2" = "完成"; + +"XPRoomSettingInputView0" = "房间密码"; +"XPRoomSettingInputView1" = "房间名"; +"XPRoomSettingInputView2" = "输入密码"; +"XPRoomSettingInputView3" = "请输入"; +"XPRoomSettingInputView4" = "取消"; +"XPRoomSettingInputView5" = "确定"; +"XPRoomSettingInputView6" = "密码错误,请重新输入"; + +"XPRoomOnLineViewController0" = "暂没有房间成员在线"; +"XPRoomOnLineViewController1" = "在线列表"; + +"XPRoomSettingViewController0" = "房间设置"; +"XPRoomSettingViewController1" = "开启排麦模式要排队才能上麦,确定开启吗"; +"XPRoomSettingViewController2" = "关闭排麦模式后会清空排麦列表哦,确定关闭吗"; +"XPRoomSettingViewController3" = "提示"; +"XPRoomSettingViewController4" = "开启离开模式后,房主会固定显示在房主位,确认开启吗"; +"XPRoomSettingViewController5" = "温馨提示"; +"XPRoomSettingViewController6" = "关闭后将看不到礼物特效,运作更加流畅。是否确认关闭礼物特效"; +"XPRoomSettingViewController7" = "温馨提示"; +"XPRoomSettingViewController8" = "关闭后将看不到聊天信息,运作更加流畅。是否确认关闭公屏"; + +"XPRoomSettingTableViewCell0" = "设置离开模式,房主可离线收益"; + +"XPRoomRoleTableViewCell0" = "移除"; + +"XPRoomRoleEmptyTableViewCell0" = "暂无数据"; + +"XPRoomOnlineTableViewCell0" = "房主"; +"XPRoomOnlineTableViewCell1" = "管理员"; +"XPRoomOnlineTableViewCell2" = "神秘人"; +"XPRoomOnlineTableViewCell3" = "上麦"; + +"XPRoomTopicViewController0" = "房间公告"; +"XPRoomTopicViewController1" = "主题不能为空"; +"XPRoomTopicViewController2" = "请设置公告标题"; +"XPRoomTopicViewController3" = "请输入公告内容"; +"XPRoomTopicViewController4" = "确定"; + +"XPRoomInviteUserViewController1" = "在线听众"; +"XPRoomInviteUserViewController2" = "暂无可抱用户"; + +"XPRoomRoleViewController0" = "暂没有设置黑名单"; +"XPRoomRoleViewController1" = "暂没有设置管理员"; +"XPRoomRoleViewController2" = "黑名单"; +"XPRoomRoleViewController3" = "管理员"; + +"XPRoomRankUserInfoView0" = "%.1f万"; +"XPRoomRankUserInfoView1" = "虚位以待"; + +"XPRoomRankTableViewCell0" = "%.1f万"; + +"XPRoomRankViewController1" = "魅力榜"; + +"XPWishGiftHistoryViewController0" = "历史心愿单"; + +"XPWishGiftViewController0" = "还没有人助力嗷"; +"XPWishGiftViewController1" = "人已助力"; +"XPWishGiftViewController2" = "今日心愿礼物"; +"XPWishGiftViewController3" = "-当日设置的心愿,会在次日0点失效"; + +"XPWishGiftCreateViewController0" = "心愿单已创建"; +"XPWishGiftCreateViewController1" = "创建心愿单"; +"XPWishGiftCreateViewController2" = "历史心愿"; +"XPWishGiftCreateViewController3" = "确认删除该条数据"; +"XPWishGiftCreateViewController4" = "确认清空当前数据"; +"XPWishGiftCreateViewController5" = "当前暂无心愿"; +"XPWishGiftCreateViewController6" = "最多只可添加三个心愿呦"; +"XPWishGiftCreateViewController7" = "确认创建当前心愿? \n创建后当日不可在编辑或删除"; +"XPWishGiftCreateViewController8" = "至少需要添加一个心愿礼物"; +"XPWishGiftCreateViewController9" = "设置心愿"; +"XPWishGiftCreateViewController10" = "清空数据"; +"XPWishGiftCreateViewController11" = "添加心愿"; +"XPWishGiftCreateViewController12" = "确定创建"; + +"XPWishGiftEmptyTableViewCell0" = "暂无数据"; + +"XPWishGiftTableViewCell0" = "编辑"; +"XPWishGiftTableViewCell1" = "删除"; + +"XPWishGiftInfoView0" = "%ld鑽石"; +"XPWishGiftInfoView1" = "赠送"; + +"XPWishGiftCreateItemViewController0" = "普通礼物"; +"XPWishGiftCreateItemViewController1" = "中级礼物"; +"XPWishGiftCreateItemViewController2" = "普通礼物"; +"XPWishGiftCreateItemViewController3" = "中级礼物"; +"XPWishGiftCreateItemViewController4" = "普通礼物"; +"XPWishGiftCreateItemViewController5" = "中级礼物"; +"XPWishGiftCreateItemViewController6" = "普通礼物"; +"XPWishGiftCreateItemViewController7" = "中级礼物"; +"XPWishGiftCreateItemViewController8" = "礼物数量范围需为"; +"XPWishGiftCreateItemViewController9" = "礼物数量范围需为"; +"XPWishGiftCreateItemViewController10" = "确定"; +"XPWishGiftCreateItemViewController11" = "普通礼物"; +"XPWishGiftCreateItemViewController12" = "中级礼物"; +"XPWishGiftCreateItemViewController13" = "高级礼物"; + +"XPTaskCompleteTipView0" = "任务已完成"; +"XPTaskCompleteTipView1" = "查看奖励"; + +"XPSessionSayHelloTableViewCell0" = "和TA聊"; + +"XPSessionSayHelloEmptyTableViewCell0" = "暂无数据"; + +"XPSessionSayHelloHeaderView0" = "当前主播评级"; +"XPSessionSayHelloHeaderView1" = "%@倍"; +"XPSessionSayHelloHeaderView2" = "当前打招呼流量"; +"XPSessionSayHelloHeaderView3" = "打招呼"; + +"NIMMessageMaker0" = "发来了一段语音"; +"NIMMessageMaker1" = "视频发送于"; +"NIMMessageMaker2" = "发来了一段视频"; +"NIMMessageMaker3" = "图片发送于"; +"NIMMessageMaker4" = "发来了一张图片"; +"NIMMessageMaker5" = "你收到了一条快捷评论"; + +"NIMMessageUtils0" = "[语音"; +"NIMMessageUtils1" = "[图片"; +"NIMMessageUtils2" = "[视频"; +"NIMMessageUtils3" = "[位置"; +"NIMMessageUtils4" = "[文件"; +"NIMMessageUtils5" = "[礼物"; +"NIMMessageUtils6" = "[您收到一条公会消息"; +"NIMMessageUtils7" = "您关注的TA上线了,快去围观吧"; +"NIMMessageUtils8" = "[分享房间"; +"NIMMessageUtils9" = "[升级消息"; +"NIMMessageUtils10" = "[推文消息"; +"NIMMessageUtils11" = "[消息"; +"NIMMessageUtils12" = "[分享了一条动态"; +"NIMMessageUtils13" = "[你收到一个全服红包"; +"NIMMessageUtils14" = "[消息"; +"NIMMessageUtils15" = "[未知消息"; + +"XPSessionFindNewTableViewCell0" = "打招呼"; +"XPSessionFindNewTableViewCell1" = "打招呼"; + +"XPSessionFindNewEmptyTableViewCell0" = "暂无数据"; + +"XPSessionFindNewFiltrateView0" = "筛选"; +"XPSessionFindNewFiltrateView1" = "用户性别"; +"XPSessionFindNewFiltrateView2" = "男"; +"XPSessionFindNewFiltrateView3" = "女"; +"XPSessionFindNewFiltrateView4" = "全部"; +"XPSessionFindNewFiltrateView5" = "是否已打招呼"; +"XPSessionFindNewFiltrateView6" = "已打招呼"; +"XPSessionFindNewFiltrateView7" = "未打招呼"; +"XPSessionFindNewFiltrateView8" = "全部"; +"XPSessionFindNewFiltrateView9" = "确认修改"; + +"XPSessionFindNewGreetListView0" = "发送成功"; +"XPSessionFindNewGreetListView1" = "请选择"; +"XPSessionFindNewGreetListView2" = "换一批"; +"XPSessionFindNewGreetListView3" = "发送"; + +"XPSessionFindNewAlertView0" = "忽略"; +"XPSessionFindNewAlertView1" = "去找"; + +"XPSessionFindNewViewController0" = "该用户被打招呼次数太多了,换一个吧"; +"XPSessionFindNewViewController1" = "发现萌新"; +"XPSessionFindNewViewController2" = "每日更新推荐"; + +"XPSessionHelloEnterView0" = "有%@人想和你认识"; +"XPSessionHelloEnterView1" = "打招呼"; + +"XPSessionListHeadFriendCell0" = "直播"; + +"XPSessionListHeadView0" = "官方公告"; +"XPSessionListHeadView1" = "活动通知"; +"XPSessionListHeadView2" = "订阅提醒"; +"XPSessionListHeadView3" = "发现萌新"; + +"NIMTimeUtils1" = "昨天"; +"NIMTimeUtils3" = "前天"; +"NIMTimeUtils4" = "凌晨"; +"NIMTimeUtils5" = "上午"; +"NIMTimeUtils6" = "下午"; +"NIMTimeUtils7" = "晚上"; +"NIMTimeUtils8" = "星期日"; +"NIMTimeUtils9" = "星期一"; +"NIMTimeUtils10" = "星期二"; +"NIMTimeUtils11" = "星期三"; +"NIMTimeUtils12" = "星期四"; +"NIMTimeUtils13" = "星期五"; +"NIMTimeUtils14" = "星期六"; + +"SessionListViewController0" = "删除"; +"SessionListViewController1" = "删除"; +"SessionListViewController2" = "暂无未读消息需要清理"; +"SessionListViewController3" = "清除"; +"SessionListViewController4" = "清除当前未读消息提醒"; +"SessionListViewController5" = "消息"; +"SessionListViewController6" = "置顶"; +"SessionListViewController7" = "取消置顶"; + +"SessionInfoViewController0" = "聊天设置"; +"SessionInfoViewController1" = "您的请求我们已经收到,我们将儘快处理"; +"SessionInfoViewController2" = "加入黑名单"; +"SessionInfoViewController3" = "加入黑名单,你将不再收到对方的消息"; +"SessionInfoViewController4" = "移除黑名单"; +"SessionInfoViewController5" = "移除黑名单,你将正常收到对方的消息"; +"SessionInfoViewController6" = "已经成功将对方移除黑名单"; +"SessionInfoViewController7" = "已经成功将对方加入黑名单"; +"SessionInfoViewController8" = "置顶聊天"; +"SessionInfoViewController9" = "加入黑名单"; +"SessionInfoViewController10" = "举报"; + +"SessionViewController0" = "加载中"; +"SessionViewController1" = "暂时无法私聊"; +"SessionViewController2" = "请输入消息"; +"SessionViewController4" = "温馨提示:对方和您非好友关係,请注意隐私安全"; +"SessionViewController6" = "温馨提示:对方和您非好友关係,请注意隐私安全"; +"SessionViewController7" = "关注成功"; +"SessionViewController8" = "你撤回了一条消息"; +"SessionViewController10" = "相机权限受限,点击确定去系统设置"; +"SessionViewController12" = "相册权限受限,点击确定去系统设置"; +"SessionViewController14" = "相册权限受限,点击确定去系统设置"; +"SessionViewController16" = "相册权限受限,点击确定去系统设置"; + +"MessageContentApplicationShareView0" = "立即进入"; + +"MessageRevokeModel0" = "你撤回了一条消息"; + +"MessageMonentsModel0" = "发佈了一条动态"; + +"MessageUnSupportModel0" = "暂不支持此种类型消息"; + +"MessageRiskAlertModel0" = "《整治网络直播乱象"; + +"MessageOpenLiveModel0" = "%@ 上线了"; + +"MessageTextClickModel0" = "未知消息类型"; +"PKIDLoginViewController2" = "请联繫客服处理"; +"PKIDLoginViewController3" = "LINE:pekoyuyin"; +"PKIDLoginViewController4" = "我知道了"; +"MessageLevelUpgradeModel0" = "恭喜!您的魅力等级已到达"; +"MessageLevelUpgradeModel1" = "恭喜!您的等级已到达"; + +"MessageTextModel0" = "未知消息类型"; + +"MessageTweetModel0" = "这个是计算一行的高度的"; + +"MessageContentTweetView0" = "这个是计算一行的高度的"; +"MessageContentTweetView1" = "立即查看"; + +"MessageContentGuildView0" = "已同意"; +"MessageContentGuildView1" = "已拒绝"; +"MessageContentGuildView2" = "消息已过期"; +"MessageContentGuildView3" = "消息已处理"; +"MessageContentGuildView4" = "拒绝"; +"MessageContentGuildView5" = "同意"; + +"MessageContentLevelUpgradeView0" = "立即查看"; + +"MessageContentTextClickable0" = "请先绑定手机号"; + +"MessageContentOpenLiveView0" = "%@ 上线了"; +"MessageContentOpenLiveView1" = "你关注的"; + +"MessageContentRedPacketView0" = "红包已失效"; +"MessageContentRedPacketView1" = "下次要快点来哦"; +"MessageContentRedPacketView2" = "红包已领取"; +"MessageContentRedPacketView3" = "可前往账单查看详情"; +"MessageContentRedPacketView4" = "点击进房领取"; +"MessageContentRedPacketView5" = "发出了一个全服红包"; + +"MessageContentUnSupportView0" = "暂不支持此种类型消息"; + +"MessageContentText0" = "未知消息类型"; + +"SessionUserInfoTableViewCell0" = "魔羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯"; +"SessionUserInfoTableViewCell1" = "错误日期格式"; +"SessionUserInfoTableViewCell2" = "错误日期格式"; +"SessionUserInfoTableViewCell3" = "错误日期格式"; +"SessionUserInfoTableViewCell4" = "%@座"; +"SessionUserInfoTableViewCell5" = "这个人还没有设置签名"; + +"MessageCell0" = "複制"; +"MessageCell1" = "删除"; +"MessageCell2" = "撤回"; + +"SessionNavView0" = "关注"; +"SessionNavView1" = "已经加入黑名单"; + +"SessionChatLimitView0" = "仅财富等级≥%zd或魅力等级≥%zd的用户可发起聊天"; +"SessionChatLimitView1" = "财富等级"; +"SessionChatLimitView2" = "魅力等级"; + +"SessionRiskView0" = "温馨提示:对方和您非好友关係,请注意隐私安全"; + +"SessionNavLiveView0" = "直播中"; + +"XPMonentsRecommendViewController0" = "没有更多数据了"; +"XPMonentsRecommendViewController1" = "删除后不可恢复\n确定删除该动态吗"; +"XPMonentsRecommendViewController2" = "删除成功"; + +"XPMonentsDetailViewController0" = "请输入您要评论的内容"; +"XPMonentsDetailViewController1" = "详情"; +"XPMonentsDetailViewController2" = "所有评论"; +"XPMonentsDetailViewController3" = "回覆"; +"XPMonentsDetailViewController4" = "回覆"; +"XPMonentsDetailViewController5" = "删除后不可恢复\n确定删除该动态吗"; +"XPMonentsDetailViewController6" = "发表评论"; +"XPMonentsDetailViewController7" = "发表评论"; +"XPMonentsDetailViewController8" = "删除成功"; + +"XPMomentsSimpleDetailViewController0" = "说说你的想法"; +"XPMomentsSimpleDetailViewController1" = "请输入您要评论的内容"; +"XPMomentsSimpleDetailViewController2" = "评论"; +"XPMomentsSimpleDetailViewController3" = "回覆"; +"XPMomentsSimpleDetailViewController4" = "删除"; +"XPMomentsSimpleDetailViewController5" = "删除后不可恢复\n确定删除该动态吗"; +"XPMomentsSimpleDetailViewController6" = "举报"; +"XPMomentsSimpleDetailViewController7" = "您的请求我们已经收到,我们将儘快处理"; +"XPMomentsSimpleDetailViewController8" = "回覆"; +"XPMomentsSimpleDetailViewController9" = "删除后不可恢复\n确定删除该动态吗"; +"XPMomentsSimpleDetailViewController10" = "发表评论"; +"XPMomentsSimpleDetailViewController11" = "发表评论"; +"XPMomentsSimpleDetailViewController12" = "删除成功"; + +"XPMonentsLatestViewController0" = "没有更多数据了"; +"XPMonentsLatestViewController1" = "删除后不可恢复\n确定删除该动态吗"; +"XPMonentsLatestViewController2" = "删除成功"; + +"XPMonentsTopicRecommondViewController0" = "没有更多数据了"; +"XPMonentsTopicRecommondViewController1" = "删除后不可恢复\n确定删除该动态吗"; +"XPMonentsTopicRecommondViewController2" = "删除成功"; + +"XPMonentsAttentionViewController0" = "没有更多数据了"; +"XPMonentsAttentionViewController1" = "删除后不可恢复\n确定删除该动态吗"; +"XPMonentsAttentionViewController2" = "删除成功"; + +"XPMonentsMineViewController0" = "删除后不可恢复\n确定删除该动态吗"; +"XPMonentsMineViewController1" = "删除成功"; + +"XPMonentsViewController0" = "推荐"; +"XPMonentsViewController3" = "最新"; + +"XPMonentsRecommendHeaderView0" = "推荐话题"; + +"XPMonentsContentView0" = "展开"; +"XPMonentsContentView1" = "收起"; + +"XPMoentsTopicListView0" = "没有更多数据了"; + +"XPMonentsPublishTopicView0" = "添加话题"; +"XPMonentsPublishTopicView1" = "重新选择"; + +"XPMonentsUserInfoView0" = "直播中"; + +"XPMonentsTooBarView0" = "删除"; +"XPMonentsTooBarView1" = "举报"; +"XPMonentsTooBarView2" = "您的请求我们已经收到,我们将儘快处理"; +"XPMonentsTooBarView3" = "好友"; +"XPMonentsTooBarView4" = "朋友圈"; +"XPMonentsTooBarView5" = "微信好友"; +"XPMonentsTooBarView6" = "QQ好友"; +"XPMonentsTooBarView7" = "QQ空间"; +"XPMonentsTooBarView8" = "%@发佈了一条动态"; + +"XPMonentPublishSuccessView0" = "审核中"; +"XPMonentPublishSuccessView1" = "咻,收到小可爱的动态了呢~\n审核通过后小秘书会帮你发送并通知你哦"; + +"XPMonentsInteractiveTableViewCell0" = "评论了你"; +"XPMonentsInteractiveTableViewCell1" = "邀请"; + +"XPMonentsEmptyTableViewCell0" = "暂无数据"; + +"XPMonentsReplyMoreTableViewCell0" = "展开%ld条回覆"; + +"XPMonentsTopicLatestViewController0" = "没有更多数据了"; +"XPMonentsTopicLatestViewController1" = "删除后不可恢复\n确定删除该动态吗"; +"XPMonentsTopicLatestViewController2" = "删除成功"; + +"XPMomentListViewController0" = "没有更多数据了"; +"XPMomentListViewController1" = "发动态"; +"XPMomentListViewController2" = "广场"; + +"XPMonentsPublishViewController0" = "最多只能输入 500 个字符哦"; +"XPMonentsPublishViewController1" = "确认删除吗"; +"XPMonentsPublishViewController2" = "提示"; +"XPMonentsPublishViewController3" = "还没有发佈哎~确定要返回吗"; +"XPMonentsPublishViewController4" = "手滑了"; +"XPMonentsPublishViewController5" = "确认返回"; +"XPMonentsPublishViewController6" = "请输入发佈的内容"; +"XPMonentsPublishViewController7" = "发佈动态"; +"XPMonentsPublishViewController8" = "发佈"; +"XPMonentsPublishViewController9" = "记录你此刻生活,分享给有趣的人看"; +"XPMonentsPublishViewController10" = "禁止出现商业广告、微信号码、QQ号码、电话号码, 以及低俗、色情、恐怖、暴力和具有侮辱性语言等内容,违规者封号处理"; + +"XPMonentsInteractiveViewController0" = "全部消息"; +"XPMonentsInteractiveViewController1" = "没有更多数据了"; +"XPMonentsInteractiveViewController2" = "清空后所有互动通知将被删除,确定清空吗"; + +"XPMonentTopicContainerViewController1" = "最新"; +"XPMonentTopicContainerViewController2" = "参与话题"; + +"XPMoentsTopicListViewController0" = "更多话题"; +"XPMoentsTopicListViewController1" = "没有更多数据了"; + +"XPUpgradeView0" = "立即更新"; +"XPUpgradeView1" = "下次再说"; + +"XPAnchorCardView0" = "剩馀"; +"XPAnchorCardView1" = "进入房间"; + +"TabbarViewController0" = "您已被踢下线,若非正常行为,请及时修改密码"; +"TabbarViewController1" = "对方撤回了一条消息"; +"TabbarViewController5" = "我的"; + +"XPLoginPhoneViewController0" = "请输入正确的手机号"; +"XPLoginPhoneViewController1" = "登录成功"; +"XPLoginPhoneViewController2" = "验证码发送成功"; +"XPLoginPhoneViewController3" = "手机号登录"; +"XPLoginPhoneViewController4" = "未注册的手机号自动登录"; +"XPLoginPhoneViewController5" = "请输入手机号"; +"XPLoginPhoneViewController6" = "请输入验证码"; +"XPLoginPhoneViewController7" = "密码登录"; + +"XPLoginInputView0" = "获取验证码"; +"XPLoginInputView1" = "重新获取"; + +"XPLoginViewController0" = "一键登录失败,请检查手机网络状态"; +"XPLoginViewController1" = "一键登录"; +"XPLoginViewController2" = "本机号码一键登录"; +"XPLoginViewController3" = "同意《默认》,并授权%@获取本机号码"; +"XPLoginViewController4" = "登录成功"; +"XPLoginViewController5" = "手机号码登录"; +"XPLoginViewController6" = "同意"; +"XPLoginViewController7" = "《用户服务协议》"; +"XPLoginViewController8" = "和"; +"XPLoginViewController9" = "《隐私政策》"; +"XPLoginViewController10" = "其他登陆方式"; +"XPLoginViewController11" = "同意隐私政策和用户协议后,才可以注册登录哦"; + +"XPForgetPwdViewController0" = "请输入正确的手机号"; +"XPForgetPwdViewController1" = "验证码发送成功"; +"XPForgetPwdViewController2" = "重置密码成功"; +"XPForgetPwdViewController3" = "忘记密码"; +"XPForgetPwdViewController4" = "请输入手机号"; +"XPForgetPwdViewController5" = "请输入验证码"; +"XPForgetPwdViewController6" = "请输入密码(6-16个字符"; + +"XPLoginPwdViewController0" = "登录成功"; +"XPLoginPwdViewController1" = "密码登录"; +"XPLoginPwdViewController2" = "请输入手机号/ID"; +"XPLoginPwdViewController3" = "请输入密码"; +"XPLoginPwdViewController4" = "手机号登录"; +"XPLoginPwdViewController5" = "忘记密码"; + +"XPLoginBindPhoneResultViewController0" = "绑定手机"; +"XPLoginBindPhoneResultViewController1" = "您当前绑定的手机号为"; +"XPLoginBindPhoneResultViewController2" = "更改手机号码"; + +"XPLoginVerifBindPhoneViewController0" = "更改绑定手机"; +"XPLoginVerifBindPhoneViewController1" = "绑定手机号"; +"XPLoginVerifBindPhoneViewController2" = "验证已绑定的手机号码"; +"XPLoginVerifBindPhoneViewController3" = "验证"; +"XPLoginVerifBindPhoneViewController4" = "手机号码不能为空"; +"XPLoginVerifBindPhoneViewController5" = "请输入正确手机号码"; +"XPLoginVerifBindPhoneViewController6" = "手机号码不能为空"; +"XPLoginVerifBindPhoneViewController7" = "验证码不能为空"; +"XPLoginVerifBindPhoneViewController8" = "验证码发送成功"; +"XPLoginVerifBindPhoneViewController9" = "验证成功"; +"XPLoginVerifBindPhoneViewController10" = "%ds后重试"; +"XPLoginVerifBindPhoneViewController11" = "重新发送"; +"XPLoginVerifBindPhoneViewController12" = "国家和地区"; +"XPLoginVerifBindPhoneViewController13" = "中国"; +"XPLoginVerifBindPhoneViewController14" = "绑定"; +"XPLoginVerifBindPhoneViewController15" = "获取验证码"; +"XPLoginVerifBindPhoneViewController16" = "输入手机号"; +"XPLoginVerifBindPhoneViewController17" = "输入验证码"; +"XPLoginVerifBindPhoneViewController18" = "如果您的手机号已丢失\n请咨询客服"; + +"LoginVerifCodeViewController0" = "后可重新获取验证码"; +"LoginVerifCodeViewController1" = "登录成功"; +"LoginVerifCodeViewController2" = "验证码已发送至"; +"LoginVerifCodeViewController3" = "填写验证码"; +"LoginVerifCodeViewController4" = "重新获取验证码"; + +"UserPrivacyView0" = "“%@”隐私政策"; +"UserPrivacyView1" = "欢迎您使用%@。我们将通过《隐私政策》和《用户协议》帮助您瞭解我们收集、使用、存储和共享个人信息的情况,特别是我们所採集的个人信息类型与用途的对应关係。\n\n为了保障产品的正常运行,我们会收集您的部分必要信息。我们可能会收集联络方式等个人敏感信息,您有权拒绝向我们提供这些信息。我们不会向第三方共享、提供、转让或者从第三方获取您的个人信息,除非经过您的同意"; +"UserPrivacyView2" = "您可以查看完整的《隐私政策》和《用户协议》,如果您同意,请点击下方同意按钮开始接受我们的服务"; +"UserPrivacyView3" = "同意"; +"UserPrivacyView4" = "不同意并退出"; + +"XPLoginBindSuccessView0" = "恭喜您!绑定成功"; +"XPLoginBindSuccessView1" = "关闭"; + +"LoginFullInfoViewController0" = "当前未填写邀请码哦~ \n 确认继续下一步吗"; +"LoginFullInfoViewController1" = "完善资料"; +"LoginFullInfoViewController2" = "性别后期无法进行修改"; +"LoginFullInfoViewController3" = "昵称"; +"LoginFullInfoViewController4" = "邀请码"; +"LoginFullInfoViewController5" = "(选填"; +"LoginFullInfoViewController6" = "下一步"; +"LoginFullInfoViewController7" = "本软件只提供给18岁或以上用户使用"; + +"LoginBindPhoneViewController0" = "第三方登录需绑定手机号喔"; +"LoginBindPhoneViewController1" = "手机格式不正确"; +"LoginBindPhoneViewController2" = "绑定手机号"; + +"MvpViewController0" = "注销时间"; +"MvpViewController1" = "%@\n\n请联繫客服(微信:kefu01)咨询哦"; +"MvpViewController2" = "该账号已注销"; +"MvpViewController3" = "为了营造更安全的网络环境\n保护您和他人的财产安全\n请先进行实名认证"; +"MvpViewController4" = "确定"; +"MvpViewController5" = "实名认证"; +"MvpViewController6" = "您被封号了"; +"MvpViewController7" = "您的账号因%@被封禁\n解封时间"; + +"XPRoomInsideRecommendEmptyCell" = "努力寻找合适房间中~"; + +"XPChooseRreaCodeVC0"="选择区号"; + +"PKIDLoginViewController11" = "短信发送成功"; +"LoginVerifCodeViewController3" = "验证码"; +"LoginVerifCodeViewController4" = "重新获取"; + +"XPLoginViewController11" = "同意隐私政策和用户协议后,才可以注册登录哦~"; +"XPMonentsMineViewController2" = "删除后不可恢複\n确定删除该动态吗?"; +"XPMineUserInfoViewController13" = "资料"; + +"PKLoginViewController1" = "同意隐私政策和用户协议后,才可以注册登录哦~"; + +"XPMinePromptWindow0"="关闭兑换"; +"XPMinePromptWindow1"="确定关闭%@的金币兑换权限吗?"; +"XPMinePromptWindow2"="取消"; +"XPMinePromptWindow3"="确定"; + + +"XPMineExchangeAuthorityFooderView0"="暂无更多不可兑换金币的成员~"; +"XPMineExchangeAuthorityFooderView1"="暂无更多可兑换金币的成员~"; + +///XPMineGuildListCell +"XPMineGuildListCell0"="申请加入"; +"XPMineGuildListCell1"="已申请"; +"XPMineGuildListCell2"="3天内不可重复发送申请"; +"XPMineGuildListCell3"="房间ID:%ld"; +"XPMineGuildListCell4"="7天内不可重复发送申请"; +"XPMineGuildListCell5"="待审核"; +"XPMineGuildListCell6"="通过邀请"; + +"XPMineMainGuildListVC0"="公会"; +"XPMineMainGuildListVC1"="房间"; + +///XPMineHallAnchorIncomeStatisViewController.m +"XPMineHallAnchorIncomeStatisViewController0" = "主播收入"; +"XPMineHallAnchorIncomeStatisViewController1" = "按日统计"; +"XPMineHallAnchorIncomeStatisViewController2" = "每周统计"; + +///XPMineClanIncomeStatisViewController.m +"XPMineClanIncomeStatisViewController0" = "收入统计"; +"XPMineClanIncomeStatisViewController1" = "按日统计"; +"XPMineClanIncomeStatisViewController2" = "每周统计"; +"XPMineClanIncomeStatisViewController3" = "每月统计"; + +///XPMineAnchorIncomeStatisViewController.m +"XPMineAnchorIncomeStatisViewController0" = "主播收入"; +"XPMineAnchorIncomeStatisViewController1" = "按日统计"; +"XPMineAnchorIncomeStatisViewController2" = "每周统计"; + +///XPMineGuildIncomeStatisViewController.m +"XPMineGuildIncomeStatisViewController0" = "收入统计"; +"XPMineGuildIncomeStatisViewController1" = "按日统计"; +"XPMineGuildIncomeStatisViewController2" = "每周统计"; +"XPMineGuildIncomeStatisViewController3" = "金币明细"; + +///XPMineGuildIncomeDetailViewController.m +"XPMineGuildIncomeDetailViewController0" = "收入明细"; +"XPMineGuildIncomeDetailViewController1" = "消息"; + +///XPMineClanViewController.m +"XPMineClanViewController0" = "没有更多数据了"; +"XPMineClanViewController1" = "公会成员(%ld)"; +"XPMineClanViewController2" = "加入房间"; +///XPMineGuildSuperAdminSetViewController.m +"XPMineGuildSuperAdminSetViewController0" = "公会超管设置"; +"XPMineGuildSuperAdminSetViewController1" = "确定要移除%@的公会超级管理员身份吗?"; +"XPMineGuildSuperAdminSetViewController2" = "添加公会超管"; +///XPMineMainIncomeStatisViewController +"XPMineMainIncomeStatisViewController0"="厅收入"; +"XPMineMainIncomeStatisViewController1"="主播收入"; +///XPMineGuildChooseManagerViewController.m +"XPMineGuildChooseManagerViewController0" = "选择管理的房间"; +"XPMineGuildChooseManagerViewController1" = "设置成功"; +"XPMineGuildChooseManagerViewController2" = "此时关闭会导致超管设置不成功确认关闭吗?"; +"XPMineGuildChooseManagerViewController3" = "完成"; + +///XPMineGuildViewController.m +"XPMineGuildViewController0" = "获取信息失败"; +"XPMineGuildViewController1" = "获取信息失败"; +"XPMineGuildViewController2" = "没有更多数据了"; +"XPMineGuildViewController3" = "确认邀请%@加入%@吗?"; +"XPMineGuildViewController4" = "提示"; +"XPMineGuildViewController5" = "成员列表 (%ld)人"; +"XPMineGuildViewController6" = "房间ID:%@"; +"XPMineGuildViewController7" = "邀请成功"; +"XPMineGuildViewController8" = "申请成功,等待房主同意"; +"XPMineGuildViewController9" = "需要房主审核"; +"XPMineGuildViewController10" = "退出将解散关係,此操作%@,您真的要退出吗?"; +"XPMineGuildViewController11" = "退出房间"; +"XPMineGuildViewController12"="加入公会"; + +///XPGuildSuperAdminMenuView.m +"XPGuildSuperAdminMenuView0" = "设置管理的房间"; +"XPGuildSuperAdminMenuView1" = "移除超管身份"; + +///XPGuildTimePickView.m +"XPGuildTimePickView0" = "开始日期不能大于当前日期"; +"XPGuildTimePickView1" = "结束日期不得早于开始日期"; +"XPGuildTimePickView2" = "开始日期和结束日期相差不得超过6个月"; +"XPGuildTimePickView3" = "结束日期不得早于开始日期"; +"XPGuildTimePickView4" = "取消"; +"XPGuildTimePickView5" = "确定"; +"XPGuildTimePickView6" = "只能查看前3个月的结算统计"; +///XPGuildTimeMonthPickerView.m +"XPGuildTimeMonthPickerView0" = "确定"; +"XPGuildTimeMonthPickerView1" = "取消"; +"XPGuildTimeMonthPickerView2" = "取消"; +"XPGuildTimeMonthPickerView3" = "确定"; + +///XPGuildHeaderView.m +"XPGuildHeaderView0" = "ID:%@"; +"XPGuildHeaderView1" = "公会房间数量:%ld"; +"XPGuildHeaderView2" = "公会房间数量:0"; +"XPGuildHeaderView3" = "公会房间(%ld)"; +"XPGuildHeaderView4" = "查看流水"; +"XPGuildHeaderView5" = "兑换权限设置"; +"XPGuildHeaderView6" = "公会超管设置"; +"XPGuildHeaderView7" = "公会房间(0)"; + +///XPGuildSearchNavView.m +"XPGuildSearchNavView0" = "搜索昵称/%@ID"; +"XPGuildSearchNavView1" = "搜索"; + +///XPGuildIncomeHeaderView.m +"XPGuildIncomeHeaderView0" = "MM月dd日"; +"XPGuildIncomeHeaderView1" = "MM月dd日"; +"XPGuildIncomeHeaderView2" = "%@钻石"; +"XPGuildIncomeHeaderView3" = "钻石"; +"XPGuildIncomeHeaderView4" = "总收入"; +"XPGuildIncomeHeaderView5" = "MM月"; + +///XPGuildAnchorIncomeSectionView.m +"XPGuildAnchorIncomeSectionView0" = "排名"; +"XPGuildAnchorIncomeSectionView1" = "头像"; +"XPGuildAnchorIncomeSectionView2" = "签约流水"; +"XPGuildAnchorIncomeSectionView3" = "昵称"; +"XPGuildAnchorIncomeSectionView4" = "房间(钻石)"; +"XPGuildAnchorIncomeSectionView6" = "所属厅"; + +///XPGuildIncomeSectionView.m +"XPGuildIncomeSectionView0" = "房间"; +"XPGuildIncomeSectionView1" = "头像"; +"XPGuildIncomeSectionView2" = "排名"; +"XPGuildIncomeSectionView3" = "房间"; +"XPGuildIncomeSectionView4" = "昵称"; +"XPGuildIncomeSectionView5" = "签约流水"; + +///XPClanMemberTableViewCell.m +"XPClanMemberTableViewCell0" = "公会长"; +"XPClanMemberTableViewCell1" = "会长·房主"; +"XPClanMemberTableViewCell2" = "房主"; +"XPClanMemberTableViewCell3" = "房间管理"; +"XPClanMemberTableViewCell4" = "公会超管"; + +///XPMineGuildSearchMemberTableViewCell.m +"XPMineGuildSearchMemberTableViewCell0" = "ID:%@"; +"XPMineGuildSearchMemberTableViewCell1" = "邀请"; +"XPMineGuildSearchMemberTableViewCell2"="去审核"; +"XPMineGuildSearchMemberTableViewCell3"="待通过"; + +///XPGuildSuperAdminSetTableViewCell.m +"XPGuildSuperAdminSetTableViewCell0" = "ID:%@"; +"XPGuildSuperAdminSetTableViewCell1" = "管理的房间"; + +///XPGuildSearchSuperAdminTableViewCell.m +"XPGuildSearchSuperAdminTableViewCell0" = "设置为超管"; +"XPGuildSearchSuperAdminTableViewCell1" = "已设置为超管"; + +///XPGuildIncomeDetailCollectionViewCell.m +"XPGuildIncomeDetailCollectionViewCell0" = "钻石"; + +///XPGuildIncomeRecordTableViewCell.m +"XPGuildIncomeRecordTableViewCell0" = "房间流水"; +"XPGuildIncomeRecordTableViewCell1" = "普通礼物流水"; +"XPGuildIncomeRecordTableViewCell2" = "背包礼物流水"; +"XPGuildIncomeRecordTableViewCell3" = "送礼人数"; +"XPGuildIncomeRecordTableViewCell4" = "新用户送礼人数"; + +///XPMineGuildEmptyTableViewCell.m +"XPMineGuildEmptyTableViewCell0" = "暂无数据"; + +///XPGuildEmptyCollectionViewCell.m +"XPGuildEmptyCollectionViewCell0" = "暂无数据"; + +///XPMineGuildSearchViewController.m +"XPMineGuildSearchViewController0" = "没有搜到相关内容"; +"XPMineGuildSearchViewController1" = "请输入需要搜索的内容"; +"XPMineGuildSearchViewController2" = "确定要添加用户%@(ID:%@)为公会超级管理员吗?"; +"XPMineGuildSearchViewController3" = "请输入公会成员ID"; + +///XPMineMangerListViewController.m +"XPMineMangerListViewController0" = "获取信息失败"; +"XPMineMangerListViewController1" = "获取信息失败"; +"XPMineMangerListViewController2" = "没有更多数据了"; +"XPMineMangerListViewController3" = "房间高管"; +"XPMineMangerListViewController4" = "房间暂无高管"; + +///XPMineGuildManagerSetViewController.m +"XPMineGuildManagerSetViewController0" = "获取信息失败"; +"XPMineGuildManagerSetViewController1" = "获取信息失败"; +"XPMineGuildManagerSetViewController2" = "没有更多数据了"; +"XPMineGuildManagerSetViewController3" = "增减高管"; +"XPMineGuildManagerSetViewController4" = "确定删除%@的高管身份吗?"; +"XPMineGuildManagerSetViewController5" = "确认设%@?为高管吗?"; +"XPMineGuildManagerSetViewController6" = "提示"; +"XPMineGuildManagerSetViewController7" = "已选择人数:%d"; + +///XPMineGuildManagerPerViewController.m +"XPMineGuildManagerPerViewController0" = "权限设置"; +"XPMineGuildManagerPerViewController1" = "设置成功"; +"XPMineGuildManagerPerViewController2" = "您有设置未保存,确定直接返回吗?"; +"XPMineGuildManagerPerViewController3" = "完成"; + +///XPMineGuildRemoveMemberViewController.m +"XPMineGuildRemoveMemberViewController0" = "获取信息失败"; +"XPMineGuildRemoveMemberViewController1" = "获取信息失败"; +"XPMineGuildRemoveMemberViewController2" = "没有更多数据了"; +"XPMineGuildRemoveMemberViewController3" = "移除房间成员"; +"XPMineGuildRemoveMemberViewController4" = "%@为高管,移除将清除数据和权限,确定移除吗?"; +"XPMineGuildRemoveMemberViewController5" = "移除%@将清除数据,确定移除吗?"; + +///XPMineGuildSetNameViewController.m +"XPMineGuildSetNameViewController0" = "设置房间名"; +"XPMineGuildSetNameViewController1" = "确定"; +"XPMineGuildSetNameViewController2" = "输入字数已达上限"; +"XPMineGuildSetNameViewController3" = "输入字数已达上限"; +"XPMineGuildSetNameViewController4" = "房间名不能为空"; +"XPMineGuildSetNameViewController5" = " 输入15个字内中文/字母"; + +///MessageContentGuildDialogView +"MessageContentGuildDialogView0"="同意申请"; +"MessageContentGuildDialogView1"="拒绝申请"; +"MessageContentGuildDialogView2"="7天内不再接受该用户的申请"; +"MessageContentGuildDialogView3"="取消"; +"MessageContentGuildDialogView4"="确定"; +"MessageContentGuildDialogView5"="确定通过该用户加入房间的申请吗?"; +"MessageContentGuildDialogView6"="确定拒绝该用户加入房间的申请吗?"; +"MessageContentGuildDialogView7"="通过"; +"MessageContentGuildDialogView8"="拒绝"; +"MessageContentGuildDialogView9"="确定通过该房间的加入邀请吗?"; +"MessageContentGuildDialogView10"="确定拒绝该房间的加入邀请吗?"; +"MessageContentGuildDialogView11"="同意邀请"; +"MessageContentGuildDialogView12"="拒绝邀请"; +"MessageContentGuildDialogView13"="确定通过该房间的退出申请吗?"; +"MessageContentGuildDialogView14"="确定拒绝该房间的退出申请吗?"; +"MessageContentGuildDialogView15"="同意退出"; +"MessageContentGuildDialogView16"="拒绝退出"; +///XPMineGuildListVC.m +"XPMineGuildListVC0" = "公会周榜"; +"XPMineGuildListVC1" = "暂没有公会"; +"XPMineGuildListVC2"="发送成功,请耐心等待"; +"XPMineGuildListVC3" = "没有搜到相关房间"; +"XPMineGuildListVC4" = "申请成功,审核通过后即可加入房间"; + +///XPMineTheGuildCell.m +"XPMineTheGuildCell0" = "我的公会"; +"XPMineTheGuildCell1" = "加入公会"; + +///XPMineGiveDiamondVC +"XPMineGiveDiamondVC0" = "我的转赠"; +"XPMineGiveDiamondVC1"="转赠记录"; +"XPMineGiveDiamondVC2"="仅显示最近三个月记录"; +"XPMineGiveDiamondVC3"="暂无转赠记录"; +///XPMineGiveDiamondSearchView +"XPMineGiveDiamondSearchView0"="搜索"; +"XPMineGiveDiamondSearchView1"="请输入用户ID"; +"XPMineGiveDiamondSearchView2"="用户不存在"; +"XPMineGiveDiamondSearchView3"="搜索房间名称或ID"; + +///XPMineChooseGiveDiamondView +"XPMineChooseGiveDiamondView0"="我的钻石:"; +"XPMineChooseGiveDiamondView1"="确定"; +"XPMineChooseGiveDiamondView2"="转赠钻石"; +"XPMineChooseGiveDiamondView3"="转赠礼物"; + +///XPMineChooseGiveDiamondVC +"XPMineChooseGiveDiamondVC0"="转赠至"; +"XPMineChooseGiveDiamondVC1"="请先设置支付密码"; +"XPMineChooseGiveDiamondVC2"="去设置"; +"XPMineChooseGiveDiamondVC3"="已超出今天转赠额度"; +"XPMineChooseGiveDiamondVC4"="单次最多只能转赠%@钻石"; +"XPMineChooseGiveDiamondVC5"="钻石余额不足,请重新输入"; +"XPMineChooseGiveDiamondVC6"="赠送成功"; +///XPMineConfirmGiveDiamondView +"XPMineConfirmGiveDiamondView0"="确认支付"; +"XPMineConfirmGiveDiamondView1"="向%@转赠"; +"XPMineConfirmGiveDiamondView2"="手续费"; +"XPMineConfirmGiveDiamondView3"="总消耗钻石"; +"XPMineConfirmGiveDiamondView4"="钻"; +"XPMineConfirmGiveDiamondView5"="兑换金币获得钻石"; +"XPMineConfirmGiveDiamondView6"="%ld金币"; +"XPMineConfirmGiveDiamondView7"="消耗金币"; +"XPMineConfirmGiveDiamondView8"="确认兑换"; + +///XPMineGiveDiamondDetailsVC +"XPMineGiveDiamondDetailsVC0"="转赠明细"; +"XPMineGiveDiamondDetailsVC1"="钻石"; +"XPMineGiveDiamondDetailsVC2"="礼物"; + +///XPMineGiveDiamondDetailsCell +"XPMineGiveDiamondDetailsCell0"="总支出%@钻"; +///XPMineChooseGiveGiftView +"XPMineChooseGiveGiftView0"="数量"; +"XPMineChooseGiveGiftView1"="全部"; +"XPMineChooseGiveGiftView2"="请先选择礼物"; +"XPMineChooseGiveGiftView3"="礼物数量有误,请重新输入"; +"XPMineChooseGiveGiftView3"="礼物数量有误,请重新输入"; +"XPMineChooseGiveGiftView4"="请输入礼物数量"; +"XPMineChooseGiveGiftView5"="暂时没有礼物"; +"XPMineGoldIncomeRecordVC0"="暂无更多数据~"; +"XPIncomeRecordGoldDetailsCell0"="已兑:%@"; +///XPIncomeRecordGoldDetailsHeadView +"XPIncomeRecordGoldDetailsHeadView0"="本周收益"; +"XPIncomeRecordGoldDetailsHeadView1"="成员"; +"XPIncomeRecordGoldDetailsHeadView2"="房间"; +"XPIncomeRecordGoldDetailsHeadView3"="金币收益"; +"XPIncomeRecordGoldDetailsHeadView4"="可结算金币"; +"XPIncomeRecordGoldDetailsHeadView5"="总收入(钻石)"; +"XPIncomeRecordGoldDetailsHeadView6"="基础总结算金币"; +"XPIncomeRecordGoldDetailsHeadView7"="公会收益"; +"XPIncomeRecordGoldDetailsHeadView8"="成员总金币"; +"XPIncomeRecordGoldDetailsHeadView9"="成员总兑换"; + +"XPMineTheGuildCell0" = "我的公会"; +"XPMineTheGuildCell1" = "加入公会"; + +"XPMinePersonalCenterCell0" = "个人中心"; +"XPMinePersonalCenterCell1" = "我的房间"; +"XPMinePersonalCenterCell2" = "收益记录"; +"XPMinePersonalCenterCell3" = "我的转赠"; + +"XPIncomeRecordView0"="明细"; +"XPIncomeRecordView1"="充值"; +"XPIncomeRecordView2"="兑换钻石"; +"XPIncomeRecordView3"="提现"; +"XPIncomeRecordView4"="钻石"; +"XPIncomeRecordView5"="金币"; + +"XPIncomeRecordVC0"="收益记录"; + +"XPExchangeDiamondsItemView0"="我的钻石:%@"; +"XPExchangeDiamondsItemView1"="我的金币:%.2f"; + +"XPExchangeDiamondsView0"="兑换钻石"; +"XPExchangeDiamondsView1"="确定兑换"; +"XPExchangeDiamondsView2"="金币数不足"; +"XPExchangeDiamondsView3"="至少需要兑换%ld钻石"; +"XPExchangeDiamondsView4"="兑换钻石数不能超过%ld钻"; +"XPExchangeDiamondsView5"="兑换成功"; + +"XPIncomeRecordGoldDetailsView0"="暂没有数据"; +"XPIncomeRecordGoldDetailsView1"="当前房间总计钻石流水:%@钻"; + +"XPIncomeRecordGoldDetailsVC0"="金币明细"; +"XPIncomeRecordGoldDetailsVC1"="至"; + +"XPGoldDetailsChooseRoomView0"="全部"; + +"XPIncomeRecordGoldDetailsPickViewView0"="取消"; +"XPIncomeRecordGoldDetailsPickViewView1"="确定"; +"XPIncomeRecordGoldDetailsPickViewView2"="至"; +"XPIncomeRecordGoldDetailsPickViewView3"="年"; +"XPIncomeRecordGoldDetailsPickViewView4"="月"; +"XPIncomeRecordGoldDetailsPickViewView5"="日"; +///XPNobleSettingViewController.m +"XPNobleSettingViewController0" = "贵族设置"; +"XPNobleSettingViewController1" = "隐身进房"; + +///XPNobleCenterViewController.m +"XPNobleCenterViewController0" = "%@立即开通贵族特权"; +"XPNobleCenterViewController1" = "购买失败"; +"XPNobleCenterViewController2" = "出现未知错误,请重新尝试"; +"XPNobleCenterViewController3" = "钻石余额不足,是否充值"; +///XPNobleCenterMyNobleView.m +"XPNobleCenterMyNobleView0" = "当前等级"; +"XPNobleCenterMyNobleView1" = " 已达到可用最高贵族等级"; +"XPNobleCenterMyNobleView2" = " 还差:"; +"XPNobleCenterMyNobleView3" = "权力力值可升级到到"; +"XPNobleCenterMyNobleView4" = " 剩馀时间:"; +"XPNobleCenterMyNobleView5" = "%lld小时"; +"XPNobleCenterMyNobleView6" = "%lld小时"; +"XPNobleCenterMyNobleView7" = "1小时"; +"XPNobleCenterMyNobleView8" = "保级%zd"; +"XPNobleCenterMyNobleView9" = "升级%zd"; +"XPNobleCenterMyNobleView10" = "当前%zd"; + +///XPNobleCenterEmptyView.m +"XPNobleCenterEmptyView0" = "即将上线敬请期待"; + +///XPNobleSettingNavView.m +"XPNobleSettingNavView0" = "贵族设置"; + +///XPNobleCenterNavView.m +"XPNobleCenterNavView0" = "贵族中心"; + +///XPNobleCenterTableHeadView.m +"XPNobleCenterTableHeadView0" = "当前权力值:%zd"; +"XPNobleCenterTableHeadView1" = "尚未开通贵族"; +"XPNobleCenterTableHeadView2" = "当前权力值:"; + +///XPNobleCenterResidueView.m +"XPNobleCenterResidueView0" = "剩馀时间说明"; +"XPNobleCenterResidueView1" = "剩馀时间以30天为周期,以获得新的贵族等级次日起算30日后的中午12:00为截止时间,周期内贵族等级出现变化则剩馀时间自动重置为30天。"; + +///XPNobleUpgradeLevelView.m +"XPNobleUpgradeLevelView0" = "升级啦!"; +"XPNobleUpgradeLevelView1" = "保留原有装扮"; +"XPNobleUpgradeLevelView2" = "佩戴高等级装扮"; +"XPNobleUpgradeLevelView3" = "前往贵族中心"; +"XPNobleUpgradeLevelView4" = "恭喜你成为‘%@’!当前已自动佩戴该等级装扮,是否保留原有装扮?"; +///XPNobleCenterEntranceView.m +"XPNobleCenterEntranceView0" = "距升级还差%@权力值"; +"XPNobleCenterEntranceView1" = "贵族中心"; +"XPNobleCenterEntranceView2" = "开通立享各项特权"; +///XPNobleCenterPayView +"XPNobleCenterPayView0" = "支付"; +"XPNobleCenterPayView1" = "钻石"; +"XPNobleCenterPayView2" = "钻石支付"; +"XPNobleCenterPayView3" = "确认支付"; +///LoginForgetEditView.m +"LoginForgetEditView0" = "获取验证码"; + +///LoginForgetPasswordViewController.m +"LoginForgetPasswordViewController0" = "忘记密码"; +"LoginForgetPasswordViewController1" = "验证码发送成功"; +"LoginForgetPasswordViewController2" = "重置密码成功"; +"LoginForgetPasswordViewController3" = "%ds后重试"; +"LoginForgetPasswordViewController4" = "重新发送"; +"LoginForgetPasswordViewController5" = "请输入正确的手机号码"; +"LoginForgetPasswordViewController6" = "提交"; +"LoginForgetPasswordViewController7" = "请输入手机号"; +"LoginForgetPasswordViewController8" = "请输入验证码"; +"LoginForgetPasswordViewController9" = "请输入密码(6-16个字符)"; +///"XPGiftLuckyGiftBroadcastCell0" +"XPGiftLuckyGiftBroadcastCell6"="周星榜"; +///不能脚本生成的 +"App_Common_And" = "和"; +"App_Common_Male" = "男"; +"App_Common_FeMale" = "女"; +"App_Common_My" = "我"; +"App_Common_Is" = "是"; +"App_Common_Not" = "否"; +"App_Common_No" = "无"; +"App_Commont_Days" = "日"; +"App_Commont_Week" = "周"; +"App_Commont_Month" = "月"; +"App_Commont_Hour" = "时"; +"App_Commont_Minute" = "分"; +"App_Commont_Day" = "天"; +"App_Common_To" = "至"; +"App_Common_Number" = "个"; +"App_Common_Person" = "·%ld人"; +"App_Common_Or" = "或"; +"App_Common_Yuan" = "美元"; +"App_Common_Wan" = "万"; +"App_Common_Zero_Second" = "0秒"; +"App_Common_zai" = "在"; +"App_Common_bei" = "被"; +"App_Common_gei" = "给"; +"App_Common_nin" = "您"; +"App_Common_Year" = "yyyy年"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index 23eb6195..d56509be 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -1328,6 +1328,7 @@ "XPGiftHeadTypeView1" = "首充有禮"; "XPGiftHeadTypeView2" = "送禮"; "XPGiftHeadTypeView3" = "互動"; +"XPGiftHeadTypeView4" = "貴族中心"; "XPGiftLuckyGiftBroadcastCell0" = "恭喜 "; "XPGiftLuckyGiftBroadcastCell1" = "開出%@獲得 "; @@ -1364,7 +1365,7 @@ "XPGiftInfoView6" = "塗鴉禮物"; "XPGiftInfoView7" = "懲罰禮物"; "XPGiftInfoView8" = "人氣"; - +"XPGiftInfoView9" = "貴族"; "XPGiftCountView0" = "其他數額"; "XPGiftCountView1" = "全部"; "XPGiftCountView2" = "其他數額"; @@ -1446,8 +1447,8 @@ "XPRoomNobleLevelUpView0" = "引爆全場!恭喜"; "XPRoomNobleLevelUpView1" = "貴族身份升級為"; -"XPRoomCandyGiftView0" = "厲害了"; -"XPRoomCandyGiftView1" = "摘下糖果得"; +"XPRoomCandyGiftView0" = "厲害了! "; +"XPRoomCandyGiftView1" = "通過尋愛之旅獲取 "; "XPRoomLicneseHourRankView0" = "恭喜"; "XPRoomLicneseHourRankView1" = "去圍觀"; @@ -1781,7 +1782,9 @@ "MessageOpenLiveModel0" = "%@ 上線了"; "MessageTextClickModel0" = "未知消息類型"; - +"PKIDLoginViewController2" = "請聯繫客服處理"; +"PKIDLoginViewController3" = "LINE:pekoyuyin"; +"PKIDLoginViewController4" = "我知道了"; "MessageLevelUpgradeModel0" = "恭喜!您的魅力等級已到達"; "MessageLevelUpgradeModel1" = "恭喜!您的等級已到達"; @@ -2127,7 +2130,9 @@ "XPMineGuildSuperAdminSetViewController0" = "公會超管設置"; "XPMineGuildSuperAdminSetViewController1" = "確定要移除%@的公會超級管理員身份嗎?"; "XPMineGuildSuperAdminSetViewController2" = "添加公會超管"; - +///XPMineMainIncomeStatisViewController +"XPMineMainIncomeStatisViewController0"="廳收入"; +"XPMineMainIncomeStatisViewController1"="主播收入"; ///XPMineGuildChooseManagerViewController.m "XPMineGuildChooseManagerViewController0" = "選擇管理的房間"; "XPMineGuildChooseManagerViewController1" = "設置成功"; @@ -2477,9 +2482,22 @@ "XPNobleCenterPayView1" = "鉆石"; "XPNobleCenterPayView2" = "鉆石支付"; "XPNobleCenterPayView3" = "確認支付"; +///LoginForgetEditView.m +"LoginForgetEditView0" = "獲取驗證碼"; - - +///LoginForgetPasswordViewController.m +"LoginForgetPasswordViewController0" = "忘記密碼"; +"LoginForgetPasswordViewController1" = "驗證碼發送成功"; +"LoginForgetPasswordViewController2" = "重置密碼成功"; +"LoginForgetPasswordViewController3" = "%ds後重試"; +"LoginForgetPasswordViewController4" = "重新發送"; +"LoginForgetPasswordViewController5" = "請輸入正確的手機號碼"; +"LoginForgetPasswordViewController6" = "提交"; +"LoginForgetPasswordViewController7" = "請輸入手機號"; +"LoginForgetPasswordViewController8" = "請輸入驗證碼"; +"LoginForgetPasswordViewController9" = "請輸入密碼(6-16個字符)"; +///"XPGiftLuckyGiftBroadcastCell0" +"XPGiftLuckyGiftBroadcastCell6"="周星榜"; ///不能脚本生成的 "App_Common_And" = "和"; "App_Common_Male" = "男";