From b5f6ce48227f9dcb150b2ffe4ffd2a1457b95249 Mon Sep 17 00:00:00 2001 From: liyuhua <15626451870@163.com> Date: Mon, 14 Aug 2023 14:39:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=95=8C=E9=9D=A2=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YuMi.xcodeproj/project.pbxproj | 16 +- YuMi/Appdelegate/AppDelegate.m | 2 +- .../login_agree.imageset/login_agree@2x.png | Bin 738 -> 410 bytes .../login_agree.imageset/login_agree@3x.png | Bin 1073 -> 656 bytes .../login_area_arrow@2x.png | Bin 290 -> 175 bytes .../login_area_arrow@3x.png | Bin 325 -> 206 bytes .../Contents.json | 4 +- .../login_choose_phone_bg@2x.png | Bin 0 -> 1167 bytes .../login_choose_phone_bg@3x.png | Bin 0 -> 1735 bytes .../Contents.json | 4 +- .../login_choose_pwd_bg@2x.png | Bin 0 -> 1201 bytes .../login_choose_pwd_bg@3x.png | Bin 0 -> 1785 bytes .../login_disagree@2x.png | Bin 381 -> 306 bytes .../login_disagree@3x.png | Bin 479 -> 461 bytes .../Contents.json | 4 +- .../login_full_female@2x.png | Bin 0 -> 599 bytes .../login_full_female@3x.png | Bin 0 -> 922 bytes .../Contents.json | 4 +- .../login_full_female_logo@2x.png | Bin 0 -> 3885 bytes .../login_full_female_logo@3x.png | Bin 0 -> 6265 bytes .../login_full_info_female_normal@2x.png | Bin 1070 -> 0 bytes .../login_full_info_female_normal@3x.png | Bin 1837 -> 0 bytes .../login_full_info_female_select@2x.png | Bin 4199 -> 0 bytes .../login_full_info_female_select@3x.png | Bin 7932 -> 0 bytes .../login_full_info_male_normal@2x.png | Bin 1060 -> 0 bytes .../login_full_info_male_normal@3x.png | Bin 1883 -> 0 bytes .../login_full_info_male_select@2x.png | Bin 4420 -> 0 bytes .../login_full_info_male_select@3x.png | Bin 7854 -> 0 bytes .../login_full_info_refresh@2x.png | Bin 4423 -> 816 bytes .../login_full_info_refresh@3x.png | Bin 4892 -> 1421 bytes .../login_full_male.imageset/Contents.json | 22 ++ .../login_full_male@2x.png | Bin 0 -> 636 bytes .../login_full_male@3x.png | Bin 0 -> 1069 bytes .../Contents.json | 22 ++ .../login_full_male_logo@2x.png | Bin 0 -> 3628 bytes .../login_full_male_logo@3x.png | Bin 0 -> 5613 bytes .../login_next_login.imageset/Contents.json | 22 ++ .../login_next_login@2x.png | Bin 0 -> 431 bytes .../login_next_login@3x.png | Bin 0 -> 690 bytes .../login_phone_pwd_bg.imageset/Contents.json | 22 ++ .../login_phone_pwd_bg@2x.png | Bin 0 -> 32611 bytes .../login_phone_pwd_bg@3x.png | Bin 0 -> 78424 bytes YuMi/Modules/YMLogin/Api/Api+Login.h | 4 + YuMi/Modules/YMLogin/Api/Api+Login.m | 5 + .../Presenter/LoginFullInfoPresenter.m | 2 +- .../YMLogin/Presenter/LoginPresenter.m | 312 ++++++++++------- .../YMLogin/Presenter/LoginVerifCodePresent.h | 8 +- .../YMLogin/Presenter/LoginVerifCodePresent.m | 25 +- .../YMLogin/Protocol/LoginVerifCodeProtocol.h | 4 + .../View/LoginFullInfoViewController.m | 328 ++++++++++-------- .../YMLogin/View/NewLogin/PIUserSexView.h | 17 + .../YMLogin/View/NewLogin/PIUserSexView.m | 137 ++++++++ .../View/NewLogin/XPForgetPwdViewController.m | 118 +++++-- .../YMLogin/View/NewLogin/XPLoginAuthCodeVC.h | 22 ++ .../YMLogin/View/NewLogin/XPLoginAuthCodeVC.m | 155 +++++++++ .../YMLogin/View/NewLogin/XPLoginInputView.m | 40 ++- .../NewLogin/XPLoginPhoneViewController.m | 300 +++++++++++++--- .../View/NewLogin/XPLoginPwdViewController.m | 27 +- .../View/NewLogin/XPLoginViewController.m | 98 ++++-- .../View/IncomeRecord/XPIncomeRecordVC.m | 1 - .../Setting/XPMineSettingViewController.m | 22 +- YuMi/Modules/YMTabbar/Api/Api+Main.h | 3 + YuMi/Modules/YMTabbar/Api/Api+Main.m | 6 +- .../YMTabbar/Presenter/MainPresenter.h | 3 +- .../YMTabbar/Presenter/MainPresenter.m | 8 +- YuMi/Modules/YMTabbar/Protocol/MainProtocol.h | 5 +- .../YMTabbar/View/TabbarViewController.m | 25 +- YuMi/zh-Hans.lproj/Localizable.strings | 22 +- YuMi/zh-Hant.lproj/Localizable.strings | 21 +- 69 files changed, 1384 insertions(+), 456 deletions(-) rename YuMi/Assets.xcassets/Login/{login_full_info_male_normal.imageset => login_choose_phone_bg.imageset}/Contents.json (70%) create mode 100644 YuMi/Assets.xcassets/Login/login_choose_phone_bg.imageset/login_choose_phone_bg@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_choose_phone_bg.imageset/login_choose_phone_bg@3x.png rename YuMi/Assets.xcassets/Login/{login_full_info_male_select.imageset => login_choose_pwd_bg.imageset}/Contents.json (70%) create mode 100644 YuMi/Assets.xcassets/Login/login_choose_pwd_bg.imageset/login_choose_pwd_bg@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_choose_pwd_bg.imageset/login_choose_pwd_bg@3x.png rename YuMi/Assets.xcassets/Login/{login_full_info_female_normal.imageset => login_full_female.imageset}/Contents.json (69%) create mode 100644 YuMi/Assets.xcassets/Login/login_full_female.imageset/login_full_female@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_full_female.imageset/login_full_female@3x.png rename YuMi/Assets.xcassets/Login/{login_full_info_female_select.imageset => login_full_female_logo.imageset}/Contents.json (69%) create mode 100644 YuMi/Assets.xcassets/Login/login_full_female_logo.imageset/login_full_female_logo@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_full_female_logo.imageset/login_full_female_logo@3x.png delete mode 100644 YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/login_full_info_female_normal@2x.png delete mode 100644 YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/login_full_info_female_normal@3x.png delete mode 100644 YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@2x.png delete mode 100644 YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@3x.png delete mode 100644 YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@2x.png delete mode 100644 YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@3x.png delete mode 100644 YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@2x.png delete mode 100644 YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@3x.png create mode 100644 YuMi/Assets.xcassets/Login/login_full_male.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/Login/login_full_male.imageset/login_full_male@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_full_male.imageset/login_full_male@3x.png create mode 100644 YuMi/Assets.xcassets/Login/login_full_male_logo.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/Login/login_full_male_logo.imageset/login_full_male_logo@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_full_male_logo.imageset/login_full_male_logo@3x.png create mode 100644 YuMi/Assets.xcassets/Login/login_next_login.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/Login/login_next_login.imageset/login_next_login@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_next_login.imageset/login_next_login@3x.png create mode 100644 YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/login_phone_pwd_bg@2x.png create mode 100644 YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/login_phone_pwd_bg@3x.png create mode 100644 YuMi/Modules/YMLogin/View/NewLogin/PIUserSexView.h create mode 100644 YuMi/Modules/YMLogin/View/NewLogin/PIUserSexView.m create mode 100644 YuMi/Modules/YMLogin/View/NewLogin/XPLoginAuthCodeVC.h create mode 100644 YuMi/Modules/YMLogin/View/NewLogin/XPLoginAuthCodeVC.m diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index 2bb5c1b5..5db815e7 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -172,6 +172,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 */; }; + 2369F9912A89CE0E00563B48 /* PIUserSexView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2369F9902A89CE0E00563B48 /* PIUserSexView.m */; }; + 23942E912A86424500D0ECC2 /* XPLoginAuthCodeVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 23942E902A86424500D0ECC2 /* XPLoginAuthCodeVC.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 */; }; @@ -1672,6 +1674,10 @@ 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 = ""; }; + 2369F98F2A89CE0E00563B48 /* PIUserSexView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIUserSexView.h; sourceTree = ""; }; + 2369F9902A89CE0E00563B48 /* PIUserSexView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIUserSexView.m; sourceTree = ""; }; + 23942E8F2A86424500D0ECC2 /* XPLoginAuthCodeVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPLoginAuthCodeVC.h; sourceTree = ""; }; + 23942E902A86424500D0ECC2 /* XPLoginAuthCodeVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPLoginAuthCodeVC.m; 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 = ""; }; @@ -4029,6 +4035,8 @@ 14B880E6299A4B62005FCA1B /* XPLoginPhoneViewController.m */, 14DCAD06299B36A500A7DD31 /* XPLoginPwdViewController.h */, 14DCAD07299B36A500A7DD31 /* XPLoginPwdViewController.m */, + 23942E8F2A86424500D0ECC2 /* XPLoginAuthCodeVC.h */, + 23942E902A86424500D0ECC2 /* XPLoginAuthCodeVC.m */, 14DCAD0C299B6AD900A7DD31 /* XPForgetPwdViewController.h */, 14DCAD0D299B6AD900A7DD31 /* XPForgetPwdViewController.m */, 14DCAD09299B5D3A00A7DD31 /* XPLoginInputView.h */, @@ -4037,6 +4045,8 @@ E818DD1B2A4896EE00F163F7 /* XPLoginAraeViewController.m */, E818DD202A48977F00F163F7 /* XPLoginAreaTableViewCell.h */, E818DD212A48977F00F163F7 /* XPLoginAreaTableViewCell.m */, + 2369F98F2A89CE0E00563B48 /* PIUserSexView.h */, + 2369F9902A89CE0E00563B48 /* PIUserSexView.m */, ); path = NewLogin; sourceTree = ""; @@ -10006,6 +10016,7 @@ 23E9EA4E2A837BE400B792F2 /* XPTreasureFairyPoolRecordView.m in Sources */, E85E7B042A4EB0D200B6D00A /* XPGuildIncomeDetailPresenter.m in Sources */, 9BD9A17C27A0EE24004186FE /* XPMineVisitorViewController.m in Sources */, + 2369F9912A89CE0E00563B48 /* PIUserSexView.m in Sources */, E82109B026F1D83500FC3319 /* LoginBindPhonePresent.m in Sources */, E81C1B1F27705F7A0020D1E4 /* XPArrangeMicViewController.m in Sources */, E8B825C726EA0D9A009E8E9F /* LoginVerifCodeProtocol.h in Sources */, @@ -10482,6 +10493,7 @@ E80EC81228ACD84000D133C5 /* QEmotionAttachment.m in Sources */, E8DACCFB2766EDC60052092C /* MicroGiftValueView.m in Sources */, E85E7BAE2A4EC99300B6D00A /* XPMineGiveDiamondVC.m in Sources */, + 23942E912A86424500D0ECC2 /* XPLoginAuthCodeVC.m in Sources */, E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */, 2331C1752A5EB71000E1D940 /* XPNobleUpgradeLevelView.m in Sources */, E885D533297798E1004DC088 /* SessionSettingTableViewCell.m in Sources */, @@ -11112,7 +11124,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 10.9; + MARKETING_VERSION = 10.13; PRODUCT_BUNDLE_IDENTIFIER = com.peko.enterprise.ios; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -11145,7 +11157,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 10.9; + MARKETING_VERSION = 10.13; PRODUCT_BUNDLE_IDENTIFIER = com.peko.enterprise.ios; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/YuMi/Appdelegate/AppDelegate.m b/YuMi/Appdelegate/AppDelegate.m index 21e5960d..82fe456a 100644 --- a/YuMi/Appdelegate/AppDelegate.m +++ b/YuMi/Appdelegate/AppDelegate.m @@ -37,7 +37,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; [UMConfigure initWithAppkey:@"6434c6dfd64e686139618269" channel:@"yumi_appstore"]; } [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; - [FBSDKProfile enableUpdatesOnAccessTokenChange:YES]; + [FIRApp configure]; return YES; } diff --git a/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@2x.png b/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@2x.png index e3bce8ced5920418c48c3ac8cb7b646618834037..7420bb66dea85f3b4ad4bdcbf2e85bcde1d39d4e 100644 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s3?yAI>n{URIRQQ)u0UD@0|*NXi;9Z!^Ya5` z{{R0kCML$m$0sBt#Ldn9;>C-iq9R>g-EZH%ZP~JA`t<2FH8l|t5l&7{3JMB8e*Cz3 z^X82kH_n_nbLh~a-rnB!_V$E?1P>1nQ&UsPc^_5)?c*v5@(X5o`SaT0E?+Z4L6_J! zxj@m&o-U3d8s}>#Ul(dt5O8%=Jhrz%wNrKPpa1s9!~#s_ET3y>eA;Y=>cl2@L2;u* zJ8M6&ebFmSma!JTx)V3C{Z_QQw2xV6bWrciQ@n-cUk>`k%iEH^{KOBSf2!+i8NtzNd6TScVOYti6=a-%zDAQKt+4` zmZyvwU)UWUZ%gLRDt=JHmX*A8#?~TN_lGhkZwh>ot;i@+`TQ~Uyp}S1Jl{Qu{11&& qTc^odP5#i>>Tg_g<>31dtQRj!-k7rW^dX@47(8A5T-G@yGywolkD*-v literal 738 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv7~+#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh1{xMv&M7Cb+E50%imor0`GP^Tj~wc7RWaE0F#_ zOu@aiLd$^O^C$`O3ua(sVrJpw7ZMQ_mrzjAGcdHVb#?a-2nmghuc@tTZt3osFmdv% zg^QQ0UbB9~=IuLo@7a6k+=WY*uiv`=@X_;E@7{m>^8LrpKmW`Y%v%i%VL?w9#}En0 zw+C~r4+Su=J!sEJzb9@LH|@fn)`Bg@VL2+c|No0;N`|lA{B`f@-^UK!*_i5_`L{$b z_l(k=2`ev%YCQQN^VnJ=pm(NV_{7tl7K%j^4quwHNO#80Ge7dSdF(O}icOPQ{KcV+ z#fNW3;bx{glcpGa^x%7^S1psdp0T}llAMpo$!kLAW>nl}+IHV^NrKRX9H!ZZC;MX$ zvR^^oU)f?RGzLJ-+x{I&+|iPxGYpROgId7-fAgh<$LapUFQw!SX*6m qQ?%A_o=H00b}7nqNpEZAXJ&_AncMgJuZjf*ID@CFpUXO@geCxN51cgs diff --git a/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@3x.png b/YuMi/Assets.xcassets/Login/login_agree.imageset/login_agree@3x.png index e22eb89cea970793cc2bdbb112e6e4d05514fc81..5035defbad67f28e5a01b049311555ef248a436d 100644 GIT binary patch literal 656 zcmeAS@N?(olHy`uVBq!ia0vp^S|H593?x6vT4n;N?EyX^u0UD@3`9jmfwZu&Fq{h% z0Ro7Kq@*NJoR5!BK|uk?`2YXEkdTmsgv9UPzk!0BoSg69zkl)K#q8O$H8nNAfB$~q zzyUKeGXnzyZf@?+pFdx?aN*3EGfS2%nKy6Vq)C&?%gc+3iqg{3l9H0Vy}jMs+#DPn zR8>{wP z>4GIee!&dicB;O7bmQE@$>o{$@=`(^FLqzEV_;w`_jGX#u{b?->h)<&1_BN*L&ema z7bWShUYA?_|Nr}2ERG!BNA4^yDB|}_GZJo9zfybLEad72*?4|YL*465Lep*wb(GKI z5)FB~&Ml`pp!@o|S&eK=TN=zugyCJIw*mpxXM-v6IzxtR2inVawCzMS>Z*7$ysM)H*Y zQYph^+4*N3S!B%Q*N8vcQ@80tzd(hI9&5$D{4BT7tIvhIHz;a$D?737t%@zMRjIsS zvF5{l)j4_TOX_DhiEe+E_4tXlk44ofy`glX(f`xTHpSruq6Z zXaU(A42~S4^((Hv0*ta3o-U3d5r^MS`x}4ILFTx7e@4i%6(Jm= zT3-IE1AL-Xbe}GqQuzP>{0n*W%#Piys{Fa|+s~tO-`+cS_xW!JfmtS*zn))`)Ht8n z^|(^6^wB~dtFJ7Vyo(oT_kEkB#aJaC&1w`HIX#Z|pv<~P#;b?YYMN}1F|&R&v^G<` z%+i&WW+3_OhCtJSj>Ny>wKLeAkG2<{yAsQ+98#S8qcJot`dsSi50hPgIX_>oC3KH@ zi6)C=sQjtrY*CfM6D^wzQXh7hDF|FyEwo_b3?(a$J|_j6u4<3lE$)~9O|tl?AdtTH zw|`!)id3xAMb7n?{#}{nD#+nh^E$OxLFOml!(?$g!)3RF*%~usk1j5#`1SbPBrkz? zi4XTk|KM;rJ@dSQ*fgz2JLG1Hs~NM$9{(88@m^t1qre=Kyq*hsxAPgqFYXIY3zUe? zYyGbOpyP&)hmpj!!lqw#e=^fIR%SNdU-w+a{7gdZs)QG*g)b*c+_`4G(sR*{YrEd1 zvSr6SGoG?_h2O1zR&(A8Oxh&UVp5@h#*R7Z?S-3*MUs3~4 zS>~zCX`gO7)$=8v^imYtc5bEkru(<6N(>%U6paD|M5h(%RjgK rQr?tBJULTlym&9A>O0HiukK%l`sApkO6+Q1LD|*Q)z4*}Q$iB}z)*1& diff --git a/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@2x.png b/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@2x.png index a96c5f03278914c19671d9317ad2b8a46055d27f..b510a7a9b4cac3999f53e43e555e5311a01fc307 100644 GIT binary patch delta 159 zcmZ3)w4QN-L_G^L0|Uc9u0_j$lxToYh%1nmlk$_1ahH?wmzVaJm+}RYKHZbg10~o> zg8YIR>V+!aW@cqH=>bKYJzX3_IIbrjV2-$Z>41VN!-+ue<|dUAKI5KbhD$1JiRw+h z2`vRI3eP$nRTY8)I9G^7Fe$1w6tqSfO`1GIL_*>NGlNK>l+@%KyDtLGWAJqKb6Mw< G&;$U9hAzwi literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^5N^5+IfWVg?501&j>LK$;OGwtxvPE3tqX&K3YEyyR+^1EhL9T^vI! z1d|ga!XEtp|3A{<4`0VgR)xKhCmIiNJZ4aBX?!!?;S7(k^5lQqSJaQ4IPrsT$^1?q z=ZwW#z_SOjyiZJ6qT1z8H_Ob%5WrMmPymZ=_*3H5!Vch(98u74=MPBIzopr04(=Y-T(jq diff --git a/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@3x.png b/YuMi/Assets.xcassets/Login/login_area_arrow.imageset/login_area_arrow@3x.png index 73e3b9c43883077fb7c7e7663d52f11a8d8b838e..99a6950ce6e7e2990d6bd811821b777c0bfab3eb 100644 GIT binary patch delta 190 zcmX@gbdGU?L_G^L0|P_CG^bi1B@y5g;tHe{WCG-*{S~DB9UL6w!3-d|vE#5aP>#JM z$S;_oA$UH^<413$49@|D;yhg(LnJOQy`ad~U?AXfvGEIog$^fE|G{r!bC^9|e4V}S z#r-9vvOhmxTf=5{f91RTIZ-=r)oz?@{;PdfO;k#>W` k3NsY<|ILw;T;w*L@kpwRa4x%$9ndNUPgg&ebxsLQ0G;N^5+IfWVg?501&j>LK$;OGwtxvPtFnL@&Xxcv^t->U8c418ba4#v z;C*}LB4>kw0NaC%-BO3#Hio`hIW2>A()HbBuJ?kq3lqYx9-4dm$llF$ zk)mojPFJUfMxNN*W)+#N8X~E7;^c~a38SuN#f3X&^slg*;S>_{xEyi1kX-4cPY4qwQ~KZcd{57V#Cgs#K2H^2Oen?Dh*xLJ&y6q3cjQr zOI*7+V@+kxp^}K3GlYYK41cXY5V+^{3R{ta=46&*hrN!^n9;Yhy=kX{7_;%w6yCZ05p5AHSC*L7>3FC2 zfxDbx$8Nzh9Y=u@8_tU~?~wi&FW`2kH=$OatqZS2zKli6?qRNCGXthP=1$op^_g+n*3*BJaV`1eiOr^Jofa4=8oNp zXZExUlsi{M@+!V-+hN}{y<@kkj2o}QyJ;UP_!ZtQ3)s8g?M|*GSDeDTZEJR@ed8)L zZ`=4iykocFS?3QTh1=7P-uYd8$)iZi(x^~oW%g?vubxIU*<91!Zy4CDU z+9~h3|7Co846i<7ITx4B6VLJU=9J}?@f&^Ku~r%N{%ODCeMM4OXL9vKH~UYzld5OB zo&T;{q#yG9Z*Aip@2^knK6|`7nsw*C{E58@&9(>Si}Y`1=zp7ir~BHMZ|}c9iQ94U zzi;`IxIG6s|Fz#a9ln?A-|RcWA4UMzFx{#(f_V+ z)nbeM?5`WkCQi4$lez1o+4uIfcTNWSzKwdvGV|QlJ0~~3&)zwC@$Hjy6_zgs^7fyY zD-)_+-gG8>=j7xar{>CRzQcJ5NL_V(_vD8BQ@_5+cQ`jqwzk|A_3p_FAh%Yxyl4)P z_I$?@d3vr4&}_q#K-FRIo>%})+6&|YMa_X`{b8|E>pGF5a?1di#~D0b{an^LB{Ts5 DOu}%w literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_choose_phone_bg.imageset/login_choose_phone_bg@3x.png b/YuMi/Assets.xcassets/Login/login_choose_phone_bg.imageset/login_choose_phone_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..67704dd3a47f67aa6b312e54e836aec587b4b277 GIT binary patch literal 1735 zcmd5-2Uk-`6n-%f13VPO!b9l_m_>;%7%Lb_B0(i45I6}U805M1BB&Hsqe8%y5*Gqe zqRAQr1QEqx0YnWd1R@$Kq9S5LdbKQzvX6hUbI#12d++ysb7$t9nKLY=tG=#@E&u@f zZVZ|S0B9lTT#3h`;|gcrG}NTCc5~>co&Dc5>{(JWTF}~952hzDGeR}}G4-~?(?~BB zR~vL|ZAF3Qg8rvD#t-F5Q31A}cI(J|Nmb785`4x*8^60-4+DU9jT>z{C+^iy_aM`R zy%_gQ2@=6v-R&6qCBya8eYLY66v40LUJsgl_Xl<)q)KAC{(UX0?Fu|r7ndJ#qTKv1 zzJn&Ajz3ZP>$=2wO~sQep5RDLOXRH$d9NnizuqVq4nGb_uWH}lBdrPS|&H}F0#_^*5?6*ON?^4ZrtR$1)jNfrb{H;u< z4w=8(IN>GF@{Si+pYNt`9%RB=>cN6Phi=~S+n-N1qi+rm^e#BK&*oglF1hb>Ip>_E z4Xz-FN$5T4k5hr}Zq_rGTgFndz!RI)W2SLG9vKnSO@4!CtjA^U-P6;7KUx`yW?%FB ze|(bM;bTLPBWD(l%xkmF96PBKJ`m$DaB@%iM>Q+gRpxbUfSzEs-mt#OED|$NnOd3B z7#$+>6xQv)T&byClw6na&5_;R9-36=7cP;*p&^@sOr-gJ`1!o{J@i5R{Hs{bxdqlM z9J7Pyt7`E6FSYHijV>#2&|j%$J+OJ0OU9@MTSX z-AD;BTf4iqPeogvR)tRvtS0f-kP~@@>VED68h;X4MYFRP=oyXPhNBN%)*~X6su|+X zz|oOt6MO)Wwiz>zVSpD|Z965fvct#Beqbvv8!zjK7=LSd@8DyyPA7&JIf?83?0|9p zHIX}7pBC0*!8aGh)Q5^HYZfwik;_+xsgVPzXGm%Ax(n&)_3{=nW_1~Eb(tXh!0GHx zpznHVtS)0*bh8Xwsxe8Roj~3hZafCW!jY+Dg49~7uHe|COlENVG z=dNX9zHS7TBixxex89xZ`Vz3{pkE#f3K?F3xFB}xd$dYGaR!E<6etQ~S&&V@5-B`$ zKqW9EC~5Zh=Aq2iIcD-K%2Y5>oI~RG>MWvxHY?UAI9TiKdsFT4Q^t-zXIm$E5oZ>r z?A9op1B#tUPWs3?TY}R0_<40Sf$BWasYRg5k7QGjm%X7j86MCfk2f|f=m=Ncw2naa zCL}&)Ljn4ABpE!^s{vC=!8`FxDI6BPA=8>89C9S5UxJ5-`MnlmODcR?RoSd{9^I6^ z+NcDS+30YD4Dlp-DBPkJDco?S))7_VYqgNYmIoHxWJBMgoHFYgu%A(um zMsneH1W#7Tjl`B6&s5PUxxMHKgqlYw7hnGkH-wmyWvEthAF9sUc6zS*=>*A_x&>D4 zRb{l+!v^L5#MLsUxbu5e#mPGEnTMn1(c}AFq9PAR5r*G?o>}vJi)rDrv6!u!YTTxF z&M)?A`*b5O!}eO)gR7-c4za+jheJWvzsH>7R+NGU{S~H>ejHpXN35Q4K?K~-$;xJn7cTGLB15Gl#HgUfa@1r3D~5NYaAS2;adjIRC^vR);N=V#Z9OLQ;>h<|I1Es+?L6Og1 zT#(ZmtlUoz4M-3{M-vJQg`|q>peP|N2eVTd23Z`w&BZag?XmKT9E{I4l z3lV50f*}h3 H*?;OkL^fG& literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_choose_pwd_bg.imageset/Contents.json similarity index 70% rename from YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/Contents.json rename to YuMi/Assets.xcassets/Login/login_choose_pwd_bg.imageset/Contents.json index d7e2ed47..eb732193 100644 --- a/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/Contents.json +++ b/YuMi/Assets.xcassets/Login/login_choose_pwd_bg.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "login_full_info_male_select@2x.png", + "filename" : "login_choose_pwd_bg@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "login_full_info_male_select@3x.png", + "filename" : "login_choose_pwd_bg@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/Login/login_choose_pwd_bg.imageset/login_choose_pwd_bg@2x.png b/YuMi/Assets.xcassets/Login/login_choose_pwd_bg.imageset/login_choose_pwd_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..02e6aa79d80b5f9a716f4e42f9358cfb573f974d GIT binary patch literal 1201 zcmeAS@N?(olHy`uVBq!ia0y~yV0s5+H*qinNxiJSAAnS8fKP}kkp541@U%P40cf#W zNswPK!{3X%zrHT-je6~6@*p`-@ZIeOF}AJ84;Hyv7|WmBFsDsT`E<7KX&2s)3=GUi zJzX3_DsH{G!+Gwq15aDx^2}-5O7wN_YAAg8+kb*p;M1RaW4Zo&&w1u69Y4)+>gv7Y z&h_`+?{fR-@4Nl>{NINw@>wTtJ)P)w>g=qW8&p0yZhd_^W@1KNH30>X#>cKNRzG zn}3F%ZSWM)(%(z0{)KaYTA*&ck@fG1q&Y9P`@cK6XQfDUQc?2)4(VA&k|uA?i#+sr zIPYlF-xET6L?ZXFyvv(nG}Gix^^eD8nzLsfxEVE(_xtL5I}V-8&@V96GD-^95uI9{ z5b}QAw5~N3@n?e9pI9ZnBlG6(vuhsjy<$?L=)73`x?wl+&*4mj5 zUYu2VxJKFRoK28HGFPAHn#9>7XxnkU;aHDg;rfI8t(=AH z8Mphm9ofq?JDMC)NEfv!go2 zd|T=zf$s;lO)={1s7^Q&e3$cIx9^En9RIeJAGhXYHk3JDU&txUX1%$wN#bzZz2EkW zI@|=m>X$9vS!aK~;O4EkYT1)*2mbzQDGXVYY~&!}YTmoUE|JGyB-Ka2?Ly(LT!Blg zJ5qWCCf%N}G)i&Fwq;D2Z4<&C=v@_1TgV@LT#dX;UURqgxZADc2_q^oNnpXb&fw9ck1e##d&l8 zUA}fU#eV*$WH+}j%X2FaPv`o1F`u=SHO1?>Q?YoX&C4@Q2c@5Q+kfE~JTcwx>Jh^e zv;3xnBu_A}johTdz4N!-+mdwUY8{6b?CNDk2DEl=;;bCLnj@Tyds_h*O z>{c9KP99*FH4!Xu404>ur5@41;jUu1n?-*~F3X$+wG4d%rw<5jEjfLF_p0EBCTlf| nLlNvU7wwqhI&vdFJm&QhE~@vds=o>>0vJ49{an^LB{Ts5Y3y*) literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_choose_pwd_bg.imageset/login_choose_pwd_bg@3x.png b/YuMi/Assets.xcassets/Login/login_choose_pwd_bg.imageset/login_choose_pwd_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf3264592ff37d106b3443d58c1a4febc22eacb GIT binary patch literal 1785 zcmd6o|3A}<7sucGirtaNCD&NKZ`fy{wT~ESu1y=-mX^B3?WR^kB9Y<7J}Zkv^JQ0K z-8K!YxRliAUhCda##mOkp&LmU%mnBn(m zuiuB$fB$k5J>LKQ^eUZysx3Qr?^s=8@0Ov+l*)DedqAVO{k1)QOIpkFbTN#3IqOb= zw3O<t8IDqzBELar4`;nM_h-=Z~AsQ`64ues!U75XHbh<1tAm?-j@Rc^dxf zNPRTM{b>Kf<9JtTiTyZ~JC=X6){5>6CLX)WYO| zE1B4d{~Qo%kQqI0D|LNu&y^$d0<~{9a93(zQH^7^s4t~FU0ou?czC(Lbs>wL^iu7+ zfJZvAyjvoFO#Mbi8ZdXhq^lz_Yn+xTJ}JWMhWwbtYmu{AY|08YM+H}Q;5(e$)Yl%6 zI-FhuQ*nC>JHFqVQ{}bLmA1u-mV8-3OiB#oqGeLGx!HF^OnRHS**v(SwAc+zEaOtW ztIZD#Lj%U{|I7b?LqwJQ?C!I^jbL<=wH!EyO6TyHM}?>KMPj)q77X29weLQ~HSAgz zI>AvcO6DKx)6%0^q;)@R^uN*^P(5%EiO>CtcIJowaXjT- za2c2S@EaT@%)`OC9e_MB8iUnf2#NdXaO1_{9__Emvs3wnf?odhhaMBh%BkeXT^Ikb z{p%R`e25Jq1d@29_pD$FFME|CW;GKki(Rn{Kh1-H{f>FwzYfDI`fMVmL6`*#j57%H zH`J_U_BO-oJ9q`JyH4+Vzro}37&zjT1tt@OIfC)7g6>t*>z@H)`2dx#Nfp2*rF4$H zk1YNt86iD;2Ma~oVZ#YJb@>X1OAn+*x&=nWNX1l>eD$0(8Kq%Z5g<=D@C z_7CN74f<(ET&L^0kwGQWJua&|oD(o@yA6Zuq!mHM6PMga*rxtg4<%BKU#&Gw=>tPK z%l&3HlQ3ygVu6KNKGe1dHeGGWFdgH*KC{-@E-=hYd6(nfRYiQDT7&WtvRKKx~zYTYs9g}{o@VM)_^BU9VEK?tzP4=NkALYod`w=5#0A+gGHq zo&x2vh00zquG8w{qJ0IzYIt8~p{BWaI|^P04l4^*5YW@TzGrr|hnSc!-P-sd3Qy+H z=2Yj4H6r4>NVs@nlXEWWIs$$0ok-Jsu9t`04GX%{gD3K{KzKj?jb#tZWE!K14 zXgO0T4xn&&`3cWrGxFZ0k(^E&wiG%+al2BgwM#3{W{2gTx;)M=e=tkBU@p;;*`<%& zB*29&`8=lr6u4bYJ_vFHp(T^y&W|-ww*0-Es(zTu9!cwIcXBh~y#jcJJ9$iGMT-Eg=<8B^y^^qCb=;;P-i2RMv%a2fo#x_|O72*#RJ++xKz;M~+!~rva-v!^Z?xTj z7T0q37L<6SuRRjJOw1#YpXPkEKht7arNU1i<_lDpmSGM{h9Ceo@&-=>uOBJM21rY( zX#V+NS{EeZ&V_N1zWe#hRDv$v#!;_HJdtUk?3qge_T5UWv(wX;wgUgA=fY*!o(v$d zZ1O2E=yA00CArjqlSNv4>cmA+CuH7jATP~9;5?-li2LNsuin{URW&u7Su0VS8<|CUo?+25IH*Y?? zX%mnHiW~wmHf=hzVZ)(~8$k@9)W(fRR;{`UWOTM=eFEwfED7=pW_T($>Gh4{hcQSr?%pEnIRFK%(pop)IH0WTNhnP-Iyfv#lmboFyt=akR{05p$@)c^nh literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv7~+#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh1{xMv&M7Cb+E50%imor0`GP^Tj~QGQcOq6-fUl z3vgMP<^wegl?3?(GYE@{*@cAF)lZ(X|KgR0k3M`nt-W3eDBI%c;uvCa`t1~Nz6J#z z7f}IGouv2m5$1Y-cxH5J_vZh-G^Nbz@}C;s*T*%4-1GB8jaBY?G_Ty9cS&~g>YcII zn0Kze68q&y(3-nlaTB&FeCK+>-8^HW&Ets`trZ&VI_w(mI_?_W)1L11+3ILJK}vS3 tNY>q$2`f5^9zH+UWgYQO`$wg;_AN8Hoo}W^Ed{!V!PC{xWt~$(697lmnjQcE diff --git a/YuMi/Assets.xcassets/Login/login_disagree.imageset/login_disagree@3x.png b/YuMi/Assets.xcassets/Login/login_disagree.imageset/login_disagree@3x.png index 7cd40360c92b741ba0b56d7bd1e07a46376b743c..98f183110902be3ed290e2648d8dec2e30792453 100644 GIT binary patch literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^S|H593?x6vT4n+%zW|>QS0KG{TZ`<9j7z6Im+O4V-gA0ymDs9kD;?RDiyw6Mc$Iy+ptU6PgIn?mrSkjM zV!I!#Jt|gKFF8qh?SrO>OR96EmPQt28eVz!-S+&apv6xl6O$xAUW~AKxMAy(2g-`K zc@Owhg;W%=CHZe&lw|rwS>>`@h|6gm4zG4Ccis<{>>;glY}sD*t%|ig5G1^6(xpQI zANjpLhepauGcq(N@Z70?-813$JttPCo4X+?iQJ^AyP#pz))oHboFyt=akR{0OyC%=Kufz literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^P9V&|3?#2~eYgdr7>k44ofy`glX(f`xTHpSruq6Z zXaU(A42jYh^8+fm3P**p$>b8#Fb__HHX4p&S0J|wCbKwgjM*2 zwJTTZ)i_=ht@Nnz6#9H|{qe1jB9_kSo5%V`LnCCGNF*oMVI{W!i^zv8u2Vz<1Kw;( z5*Ja?e({^@fHT8WmKrUEsD=jSTRa!uG)!!ksOk8~9l_KQ+7i*xv9-s7Pe7gPNkEo~ c)c&K)1|iXm#ep|$fxct#boFyt=akR{06Ut{9{>OV diff --git a/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_full_female.imageset/Contents.json similarity index 69% rename from YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/Contents.json rename to YuMi/Assets.xcassets/Login/login_full_female.imageset/Contents.json index ecdfa303..64803feb 100644 --- a/YuMi/Assets.xcassets/Login/login_full_info_female_normal.imageset/Contents.json +++ b/YuMi/Assets.xcassets/Login/login_full_female.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "login_full_info_female_normal@2x.png", + "filename" : "login_full_female@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "login_full_info_female_normal@3x.png", + "filename" : "login_full_female@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/Login/login_full_female.imageset/login_full_female@2x.png b/YuMi/Assets.xcassets/Login/login_full_female.imageset/login_full_female@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2b072a003a33395be9b857f892c989162ce2618b GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv81S-T$%K(*&>l0y;>qB*-tA;UqunMj6gK?|!BE=_!1_eqeP` zZlLYQBaaX5UOaU|SDe_zCKGiL-e(WaZJQJ2UaNFRm4SiL+tbA{#NzbcDcAcBD+st2 zD!=RdZFP3`uDSpJ?@3KcY*G}64171a)Kbo{)lvW2$^zs0OXT0074c+T5z?#wzRq#7 zsNmI>?}vZ61od6bkr%kI$!4CQ-=ec0R;RAM@#@sNM;8ycGW)IWkUi`f&}CV}_*Z%3 zIk_7dkK(2|ga_|n2|suD+={<1eVFzK7WbwcZIoHEC~Q^EK`||*sO+rV30`swy;!*O z0+p9qRbAn(JfJIMTC*VCT9G#^#ba%J#;>)3&a>YisQ>b&S}$kcu{$hhm(IQ^QoK8z zCun2AUU&B|F81Pb^8dWd|F|1nGBvbYJ?G*!*N$HY%PM@%$YvbN3S(Tp{!QHO6bsuU z6Ru6?|2i=4SwHE>u*q*0H5MN;+I9Va sX0l{#c0zedqg@H>C60DQxAWKSV{-y}U$dlq1V#vhr>mdKI;Vst0E7lVumAu6 literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_full_female.imageset/login_full_female@3x.png b/YuMi/Assets.xcassets/Login/login_full_female.imageset/login_full_female@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c7207ddf7d495bac534084fa3892ee28afd2b572 GIT binary patch literal 922 zcmeAS@N?(olHy`uVBq!ia0vp^P9V&|3?#2~eYgdr<^=eJxB}__8=wB)_ymMDz5l=A zF^Ie2(f{>85r{ZY(0zI(L4LsuU*G&> zacWhP{`*nrq&U~Me)TH}k8jS&H+>%HYNgM&w=^o$V||@>?!l!~?e&)S<#4Q+3tC#$7oUn?@7m%BXgn*)xgHL6f0hlI5Hq_k*900vD(mN_{sgd}TX}QO~p|QRVYo6K_vg zt;sQI_OmLy|>`23w|K-|oHjr(fRx@hA96_$~dtSzGU) zJY>SV+lnR5q^;qrK-U)S#U1ZM+y%vWMCu~g1Ee}W?|@3M#x_6h7xQTmpqZ`j1)Aj#%9oy~9^WFE8v7<D%h5j>E1m8LHKc^{ew2uwHz~I{;rExbZ_Py*cI%gS7VQEi OVg^rFKbLh*2~7aV+u}F? literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_full_female_logo.imageset/Contents.json similarity index 69% rename from YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/Contents.json rename to YuMi/Assets.xcassets/Login/login_full_female_logo.imageset/Contents.json index 05c68a8d..f22ab848 100644 --- a/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/Contents.json +++ b/YuMi/Assets.xcassets/Login/login_full_female_logo.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "login_full_info_female_select@2x.png", + "filename" : "login_full_female_logo@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "login_full_info_female_select@3x.png", + "filename" : "login_full_female_logo@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/Login/login_full_female_logo.imageset/login_full_female_logo@2x.png b/YuMi/Assets.xcassets/Login/login_full_female_logo.imageset/login_full_female_logo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc34039222f91d628d5836fc0e5cb607f031c539 GIT binary patch literal 3885 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

k_pHy!tLe}rjZmgodF+0MezkhF=!o8!CqH< zft1H*cjnx2*8Dmv|Niee-LWxgnIj5Y!#n>Bw?o+4Ch0V*W#pVi_^_wk zYxZjvID)EJjlhMD%yxC5FW4X)fxMLiPoI>i= zjs^bS_*JZIfWR2Ka|($ch3Y*{3wRYba|l*zHFW1F6giL8Cng}?I2mTo13*x7@}A-| zekim7Yk~i02K}JQ~+t^+ym9mk25mhb_DcPX@N6LKzZ-L`Z>DQ8^8rA$kgL6=OSE20R5` zMdeqh3^+*+KNU}FK*>(ke zRV?Ib-SjH400000NkvXXu0mjf1F5ZQ literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_full_female_logo.imageset/login_full_female_logo@3x.png b/YuMi/Assets.xcassets/Login/login_full_female_logo.imageset/login_full_female_logo@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f823a923b1105892c9017956703138d11c0bf483 GIT binary patch literal 6265 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 S=m`E2kiCtwb+y&an12A;nA&6j diff --git a/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@2x.png b/YuMi/Assets.xcassets/Login/login_full_info_female_select.imageset/login_full_info_female_select@2x.png deleted file mode 100644 index 6f871a5a48567f156e9b43b11f648645ac874719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4199 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 diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@2x.png b/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@2x.png deleted file mode 100644 index 4ca24df01c5c19b04752e41d782c78803bef76f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1060 zcmeAS@N?(olHy`uVBq!ia0vp^|AE+pgBeKjNnSPuQj-IGLR^9Lix=PS-TVLY<@c8_ z{{h($^ztQ?0pSUpJbt5+a4 zQ1QPZ)a`heLLE0jMG=xRCm=yGcYhqd%8G=RNQ)d=Vs9& z2MN{(@&*0JcDSV9*>v`0+VSu8yEg7N33NB`yeh-<>+X`KaQ3Rj;!93Edb;lNye+SO zEPS=L?)S>yntMFI`zO<_@2)tuTAW_^yY&k{Z;0RPg=+I3*@Y~*BcII^ zW0_ype`=P^eBEFB15*8#@8CG2zG6q6|EItIHpc#aUTJ)?IDDm@{`m@x<)-VE>>iY? z|M61#+=r06`)B<)P@#7GS@?x7wHaUfe*fj_ukw4jyJ*3!!}El#+Na8^UVhcg&y-%T z@y2dZN|wBY8h7RQhE1%2J0`a7`IB+#+>4;NisZC^Zob>*1vFKx-TFRzuiwVWZKs%y zCtUwtnc!WzIp?vuroMe!lJ7xL4ed`~-M0Nz_dPqG z!O-x(SC8C|EwzuVj)gtaK76H?SLMi`a~@`F3pQn%emlBvlgW;sh3eAU0ylpo_9!1L zyW@WDf7-FSQUTU&>mJLWd{=em%zc50_6lCUK68ZL*G2y3%y_2cD=;(8{-|eT?!S|} z?wH?SqOtfTr{guj$fl!iJrmS*7cy*deRnWPc-_R);abesLyj=}2E-f^zHJd;+tqN~ z-gtZRvHuG`r7+HW;lq0VjKG9bi|zh@IP>}HvKoP#e@ZW`=sta4D6{d2&}aXSzxP$A z{nsr0BRuon{s#a2|F@2OeE;*C?Gknq>oV@>|F*0T0EUQONiUyS|EJ-Kz3<^Pm* zavq56{bhdQbG&09!Ym}>BQ zqgLWy@40&zS9ZQ{&hd!dsZ$Gx*{^Z`iH=-MOQ?f(Y17B$? zUviwJ^7;V(RKbR|f!f*sPg{k!Z;~iEEA-u-^`hf1mYT_~D}Ucln(MkSDDfG)rq=_T z``_&EecK=R`d|9`^4tIGtp68S|1auQO|aQBxBj&8`Wo{a@9&=5FE(pxo!F!QJL~t& zt^eP0@v>?C{{t)T`Ua|=+w}U>^)GCvyS}u24J}r=|8Um(`(Nbu8rCh@_`TxWZ}WOa Yt&ba*w#6;w1?DRTPgg&ebxsLQ0PQ+iFaQ7m diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@3x.png b/YuMi/Assets.xcassets/Login/login_full_info_male_normal.imageset/login_full_info_male_normal@3x.png deleted file mode 100644 index b4ce6ae1992ab1fb3c2985d3f32bbbcc5cfdb077..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1883 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 diff --git a/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@3x.png b/YuMi/Assets.xcassets/Login/login_full_info_male_select.imageset/login_full_info_male_select@3x.png deleted file mode 100644 index 90079796a539e05465b9a29d4be6b7a9e16567ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7854 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 QcM6yqS>7tY`S9ic0jZ4mPyhe` diff --git a/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/login_full_info_refresh@2x.png b/YuMi/Assets.xcassets/Login/login_full_info_refresh.imageset/login_full_info_refresh@2x.png index 1ee15dcd8cb52a0422cf7ac7a7a70fb5215c2225..6f59adb5c6ee96dfe04882c7ca5838317bcc002d 100644 GIT binary patch delta 804 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 TZH6!~00000NkvXXu0mjfXKr~J literal 4892 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 TxPPSo-eBly8)=njI^O;tHC)-+ diff --git a/YuMi/Assets.xcassets/Login/login_full_male.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_full_male.imageset/Contents.json new file mode 100644 index 00000000..8f4f0553 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_full_male.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_full_male@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_full_male@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_full_male.imageset/login_full_male@2x.png b/YuMi/Assets.xcassets/Login/login_full_male.imageset/login_full_male@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6490b8dc205feb27c071ca36abb6d61b78cbed83 GIT binary patch literal 636 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv81S_5hy{S0KIM*8erHVCeP#f624| z%Yf#*KvMbo|2m*KU}ZqYs^)qsz z%U|9cXsQWSl@;I?7yWQ;aZz5HpNIXntxvj7_A@XrR(QHNhFF|FIwiBX$v~iOasfy0 zofRjZ)^7dzfB*WNRZch7-kN#tN6q82#);;U3HeHMS89Jt`g^4JO2ZrdO<#*7BbGgs z_o#bx$>{B^B|f{8JWu4#)N`5C;TpBgxm-$VXA#@p^K({}-;8*6(?!yU>-)35r?dcee!*g)B1AX9qSYe+Hd+Fv~w?F+iC2l zTXZc+`dexT!#h2-Z69KEcFXPC!N#{Eg+*1SJlRFDU!RsdJ-;(^O2r&gz9&My`S#*Cg@TqH(It ztH~PeDxH#zSGIlnzA1Ih)av-maHB~PcmBJ4x1Zcl>lx$SyWv-r;iuvib)Mg5{1V`Z l){JIppS73e`J4D3Y|AfsE!`M?BNZ5T44$rjF6*2UngEAOS(N|) literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_full_male.imageset/login_full_male@3x.png b/YuMi/Assets.xcassets/Login/login_full_male.imageset/login_full_male@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..28f873f62cf5a828a1cbd3ad58ae2a415ca021c7 GIT binary patch literal 1069 zcmeAS@N?(olHy`uVBq!ia0vp^P9V&|3?#2~eYgdr)&=;4xB}@lul}!j`5#EGdJG~# z=*|B%uc7Rt6g{4HO5n*S-R=f#N`N>0>bC<^T0yS)de9J4huEJ%^eAH4~@> zjDUtf6o3@J1_?qGtOmPb?OPCc?VJA_KmOnLll2&*>!4 z#fBw8e!&dUE^k@C{NVfbaqp5!A=PV>!VJ0-xgTGV-#n|WEYLwm{Q0p19`{$K*_941YV@Sl|r_*oFT4W&5s%+iS!2Rx)-r{ff<|cK&|DR+ma%)S8 znC$vzvx}d)tJW8-n&foizsBPC%kEFjk;_wc;k>{t+dlWUz+8b0=hiZFrTn{zE?oi3 zjl&hMRBd_Z%A;|oQzGJvpYnbUE)kBc+!A(;A`8nN?%8H6sTBA1+1urFU%#7o>+?OW ze=iSR?BEf!@&7VKHIi*YDyR3?lf@Sb7G}FNZMa=!x=t)$Z*KgK3mp=PJP$l9tqvXd z@y@A-V-Jf)_ynJM+2Tu=sV;h9=AGwc+xpaX;$}6W*acBfeG?C=F8pnJKdO5EtsC2p z-&($X+qo&XSWgunm?<@#g0>sSNx-Mb&mf$zuKRNEsIOl~i13|N2Uho2Z@KrR!<@an&|56oG9l}P;4zW* zN<;N+n+&GU+LSwM$4yc7B}-E?GFAv2+aNRj)3jIWsjF_gtgH=7+k3vV;<(YJAmym1 zQSSZ1k<$yV1uIvrx$|y<@ImX48(A%}4}71v6rB;;=``c}9AS+-XOTG#t!_M~2OX5f z^ymJl;mu9k{tR@D zn02G1;`*6;3Gr`M3)H?@Fa1t(4&%3beRD2cEWFVpU328vaV5*7Qz>>)!Zo;q6+54UiI4jiCa&rp@_w`z-hN6>{+pt2x6;yw{|vUBjMwfvX}{#Y&ckDwuNR&84a`Lh Mp00i_>zopr09u1OzyJUM literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_full_male_logo.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_full_male_logo.imageset/Contents.json new file mode 100644 index 00000000..64454c3f --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_full_male_logo.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_full_male_logo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_full_male_logo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_full_male_logo.imageset/login_full_male_logo@2x.png b/YuMi/Assets.xcassets/Login/login_full_male_logo.imageset/login_full_male_logo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..527b140ba44ebc90844388757c2cef5096fcb86e GIT binary patch literal 3628 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 O`wX70elF{r5}E+wS;MIS literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_next_login.imageset/login_next_login@3x.png b/YuMi/Assets.xcassets/Login/login_next_login.imageset/login_next_login@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4e534bcb582fb89826e7607ed38894ab4bce7f GIT binary patch literal 690 zcmV;j0!{siP)qX!?+7`jKe*lWF>tY5kFC z`jKe+k!bpnXZn$7`;lq-kZAmmX!nyZ2y#M|Cw$7 zZa=PA0000VbW%=J0RHg@-qe6&M%r{dD);HZGZD$Oq@#;-Odu8y<#$*a?u-`z00GuX zL_t(&-tF62a@#NvMbXy)XHlZ&(RO3l{~qIrN{VvClAJH%mCp`tVIcU?7-i4x$9|J% zMki#xsMouuI;||ettvKeG5X+~=#)4Yf{!8J9+vnHTV%#LoiK4?@)EB)ze~^rh&Sa0 zFIW|eIIX=l&iSmd&(Bb%DG{w_PY%&OYGT9}7USA3i9_^7>{^Ujnn~Ysqr{ADzG|+i z^2f(TiLOzve6;K4DHo~!yH4$-o^t=ee?3pOOM8tznHG2UDc;`qq_Y^PlKa9w5R2iv zF0EJ4h`ZxdCP<&hcme1xbB9_RHgnD z8j>8JisYX{LuLus4ONmHfb*L&aa)U)<)hS-e1#9LBn>C*y;6x4Has8NE8ifey6{xP z4jEh08iwZ0+H*COj9btp>HH^Y`Up23;q?&Kd`UaHB;U{_#fmN|oY;~iU$G^*tz}D+ z1K5(xk}XMcuqFADEy)?MCHayqNwN!Dk~SbqlG?H*`5DNPVga%w=`354X+f6cXJAV@ zf-R{8S&~13D@n`@TuHHOL6vkJP+&^x$4H2h`e7fUq}xaqOVZ!LIfA6S@kWZISB6l3 Y0h%?wM#X-${{R3007*qoM6N<$g2FddApigX literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/Contents.json b/YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/Contents.json new file mode 100644 index 00000000..e5e5b576 --- /dev/null +++ b/YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "login_phone_pwd_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "login_phone_pwd_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/login_phone_pwd_bg@2x.png b/YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/login_phone_pwd_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..80e1532b73380c25cda93d5337e51196240d2995 GIT binary patch literal 32611 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

%JcuTdNfs88uMoCEolwN`J}WcS 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 V5o)UVtN&e5{-hyaBWv~T{{eZfaSZ?f literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/login_phone_pwd_bg@3x.png b/YuMi/Assets.xcassets/Login/login_phone_pwd_bg.imageset/login_phone_pwd_bg@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..c5c223b3cd11c12ac144ff79835a7db16415c2d3 GIT binary patch literal 78424 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 V(;TOH=z;zlE6S?L)JT~H{a?5)getView { return ((id) [super getView]); } @@ -42,151 +81,156 @@ /// 第三方登录 /// @param type 登录的类型 - (void)thirdLoginWithType:(ThirdLoginType)type{ - - SSDKPlatformType platformType; - switch (type) { - case ThirdLoginType_FB: - platformType = SSDKPlatformTypeFacebook; - break; - case ThirdLoginType_Line: - platformType = SSDKPlatformTypeLine; - break; - case ThirdLoginType_Apple: - platformType = SSDKPlatformTypeAppleAccount; - break; - case ThirdLoginType_Gmail: - platformType = SSDKPlatformTypeGooglePlus; - break; - default: - platformType = SSDKPlatformTypeAppleAccount; - break; - } - NSDictionary * settings; - if (type == SSDKPlatformTypeFacebook) { - settings = @{@"isBrowser":@(YES)}; - } - - [ShareSDK cancelAuthorize:platformType result:nil]; - [ShareSDK authorize:platformType settings:settings onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) { - if (state == SSDKResponseStateSuccess) {///成功 - ThirdUserInfo * userInfo = [[ThirdUserInfo alloc] init]; - NSString * openid = @""; - NSString * access_token = user.credential.token.length > 0 ? user.credential.token : @""; - NSString * unionid = @""; - if (platformType == SSDKPlatformTypeLine) { - openid = user.credential.uid.length > 0 ? user.credential.uid : user.uid; - unionid = user.credential.uid.length > 0 ? user.credential.uid : user.uid; - userInfo.userName = user.nickname; - userInfo.avatarUrl = user.icon; - } else if (platformType == SSDKPlatformTypeFacebook) { //微信登录 - openid = user.credential.uid.length > 0 ? user.credential.uid : user.uid;; - unionid = user.credential.uid.length > 0 ? user.credential.uid : user.uid;; - userInfo.userName = user.nickname; - userInfo.avatarUrl = user.icon; - } else if (platformType == SSDKPlatformTypeAppleAccount) { //苹果登录 - // openid = user.credential.token; - unionid = [user.credential rawData][@"user"]; - NSString * familyName = [user.credential rawData][@"fullName"][@"familyName"]; - NSString * givenName = [user.credential rawData][@"fullName"][@"givenName"]; - if (familyName.length > 0 && givenName.length> 0) { - userInfo.userName = [NSString stringWithFormat:@"%@%@", familyName, givenName]; - } - } - if (unionid == nil) { - unionid = @""; - } - openid = unionid; - userInfo.openid = openid; - userInfo.access_token = access_token; - userInfo.unionid = unionid; - ///保存一下第三方的值 - [AccountInfoStorage instance].thirdUserInfo = userInfo; - [self loginWithThirdPartWithType:type]; - } else if(state == SSDKResponseStateCancel) {///取消 - [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter0")]; - - } else if (state == SSDKResponseStateFail) {///失败 - [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; - - } - }]; + + SSDKPlatformType platformType; + switch (type) { + case ThirdLoginType_FB: + platformType = SSDKPlatformTypeFacebook; + break; + case ThirdLoginType_Line: + platformType = SSDKPlatformTypeLine; + break; + case ThirdLoginType_Apple: + platformType = SSDKPlatformTypeAppleAccount; + break; + case ThirdLoginType_Gmail: + platformType = SSDKPlatformTypeGooglePlus; + break; + default: + platformType = SSDKPlatformTypeAppleAccount; + break; + } + NSDictionary * settings; + if (type == SSDKPlatformTypeFacebook) { + settings = @{@"isBrowser":@(YES)}; + } + + [ShareSDK cancelAuthorize:platformType result:nil]; + [ShareSDK authorize:platformType settings:settings onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) { + if (state == SSDKResponseStateSuccess) {///成功 + ThirdUserInfo * userInfo = [[ThirdUserInfo alloc] init]; + NSString * openid = @""; + NSString * access_token = user.credential.token.length > 0 ? user.credential.token : @""; + NSString * unionid = @""; + if (platformType == SSDKPlatformTypeLine) { + openid = user.credential.uid.length > 0 ? user.credential.uid : user.uid; + unionid = user.credential.uid.length > 0 ? user.credential.uid : user.uid; + userInfo.userName = user.nickname; + userInfo.avatarUrl = user.icon; + } else if (platformType == SSDKPlatformTypeFacebook) { //微信登录 + openid = user.credential.uid.length > 0 ? user.credential.uid : user.uid;; + unionid = user.credential.uid.length > 0 ? user.credential.uid : user.uid;; + userInfo.userName = user.nickname; + userInfo.avatarUrl = user.icon; + } else if (platformType == SSDKPlatformTypeAppleAccount) { //苹果登录 + // openid = user.credential.token; + unionid = [user.credential rawData][@"user"]; + NSString * familyName = [user.credential rawData][@"fullName"][@"familyName"]; + NSString * givenName = [user.credential rawData][@"fullName"][@"givenName"]; + if (familyName.length > 0 && givenName.length> 0) { + userInfo.userName = [NSString stringWithFormat:@"%@%@", familyName, givenName]; + } + } + if (unionid == nil) { + unionid = @""; + } + openid = unionid; + userInfo.openid = openid; + userInfo.access_token = access_token; + userInfo.unionid = unionid; + ///保存一下第三方的值 + [AccountInfoStorage instance].thirdUserInfo = userInfo; + [self loginWithThirdPartWithType:type]; + } else if(state == SSDKResponseStateCancel) {///取消 + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter0")]; + + } else if (state == SSDKResponseStateFail) {///失败 + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; + + } + }]; } -(void)loginWithThirdPartWithType:(ThirdLoginType)type{ - NSString * openid = [AccountInfoStorage instance].thirdUserInfo.openid; - NSString * access_token = [AccountInfoStorage instance].thirdUserInfo.access_token; - NSString * unionid = [AccountInfoStorage instance].thirdUserInfo.unionid; - [Api loginWithThirdPart:[self createHttpCompletion:^(BaseModel * _Nonnull data) { - AccountModel * model = [AccountModel modelWithDictionary:data.data]; - if (model != nil) { - [[AccountInfoStorage instance] saveAccountInfo:model]; - [[self getView] loginSuccess]; - [XPAdjustEvent loginEvent]; - } - } fail:^(NSInteger code, NSString * _Nullable msg) { - [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; - } showLoading:YES] openid:openid unionid:unionid access_token:access_token type:[NSString stringWithFormat:@"%lu", (unsigned long)type]]; - - + NSString * openid = [AccountInfoStorage instance].thirdUserInfo.openid; + NSString * access_token = [AccountInfoStorage instance].thirdUserInfo.access_token; + NSString * unionid = [AccountInfoStorage instance].thirdUserInfo.unionid; + [Api loginWithThirdPart:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + AccountModel * model = [AccountModel modelWithDictionary:data.data]; + if (model != nil) { + [[AccountInfoStorage instance] saveAccountInfo:model]; + [[self getView] loginSuccess]; + [XPAdjustEvent loginEvent]; + + [[NSUserDefaults standardUserDefaults]setValue:@(type) forKey:@"kLoginSuccessType"]; + [[NSUserDefaults standardUserDefaults]synchronize]; + } + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; + } showLoading:YES] openid:openid unionid:unionid access_token:access_token type:[NSString stringWithFormat:@"%lu", (unsigned long)type]]; + + } -(void)thirdLoginByFBWithPresentingViewController:(UIViewController *)presentingViewController { FBSDKLoginManager *manager = [[FBSDKLoginManager alloc] init]; - [manager logOut]; - [manager logInWithPermissions:@[@"public_profile"] - fromViewController:presentingViewController - handler:^(FBSDKLoginManagerLoginResult * _Nullable result, NSError * _Nullable error) { - if (error) { - [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; - } else if (result.isCancelled) { - [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter0")]; - } else { - NSLog(@"Logged in"); - } - }]; + [manager logOut]; + [manager logInWithPermissions:@[@"public_profile"] + fromViewController:presentingViewController + handler:^(FBSDKLoginManagerLoginResult * _Nullable result, NSError * _Nullable error) { + if (error) { + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; + } else if (result.isCancelled) { + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter0")]; + } else { + NSLog(@"Logged in"); + } + }]; } -(void)thirdLoginByGoogleWithPresentingViewController:(UIViewController *)presentingViewController configuration:(GIDConfiguration *)configuration{ - - [GIDSignIn.sharedInstance signInWithConfiguration:configuration - presentingViewController:presentingViewController - callback:^(GIDGoogleUser * _Nullable user, - NSError * _Nullable error) { - if (error != nil) { - if (error.code == kGIDSignInErrorCodeCanceled){ - [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter0")]; - }else{ - [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; - } - } else { - ThirdUserInfo * userInfo = [[ThirdUserInfo alloc] init]; - NSString * openid = user.userID; - NSString * access_token = user.authentication.idToken.length > 0 ? user.authentication.idToken : @""; - NSString * unionid = user.userID; - userInfo.userName = user.profile.name; - userInfo.avatarUrl = [[user.profile imageURLWithDimension:60] absoluteString]; - userInfo.openid = openid; - userInfo.access_token = access_token; - userInfo.unionid = unionid; - ///保存一下第三方的值 - [AccountInfoStorage instance].thirdUserInfo = userInfo; - [self loginWithThirdGoogle]; - } - }]; + + [GIDSignIn.sharedInstance signInWithConfiguration:configuration + presentingViewController:presentingViewController + callback:^(GIDGoogleUser * _Nullable user, + NSError * _Nullable error) { + if (error != nil) { + if (error.code == kGIDSignInErrorCodeCanceled){ + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter0")]; + }else{ + [[self getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; + } + } else { + ThirdUserInfo * userInfo = [[ThirdUserInfo alloc] init]; + NSString * openid = user.userID; + NSString * access_token = user.authentication.idToken.length > 0 ? user.authentication.idToken : @""; + NSString * unionid = user.userID; + userInfo.userName = user.profile.name; + userInfo.avatarUrl = [[user.profile imageURLWithDimension:60] absoluteString]; + userInfo.openid = openid; + userInfo.access_token = access_token; + userInfo.unionid = unionid; + ///保存一下第三方的值 + [AccountInfoStorage instance].thirdUserInfo = userInfo; + [self loginWithThirdGoogle]; + } + }]; } -(void)loginWithThirdGoogle{ - NSString * openid = [AccountInfoStorage instance].thirdUserInfo.openid; - NSString * access_token = [AccountInfoStorage instance].thirdUserInfo.access_token; - NSString * unionid = [AccountInfoStorage instance].thirdUserInfo.unionid; - [Api loginWithThirdPart:[self createHttpCompletion:^(BaseModel * _Nonnull data) { - AccountModel * model = [AccountModel modelWithDictionary:data.data]; - if (model != nil) { - [[AccountInfoStorage instance] saveAccountInfo:model]; - [[self getView] loginSuccess]; + NSString * openid = [AccountInfoStorage instance].thirdUserInfo.openid; + NSString * access_token = [AccountInfoStorage instance].thirdUserInfo.access_token; + NSString * unionid = [AccountInfoStorage instance].thirdUserInfo.unionid; + [Api loginWithThirdPart:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + AccountModel * model = [AccountModel modelWithDictionary:data.data]; + if (model != nil) { + [[AccountInfoStorage instance] saveAccountInfo:model]; + [[self getView] loginSuccess]; [XPAdjustEvent loginEvent]; - } + [[NSUserDefaults standardUserDefaults]setValue:@(ThirdLoginType_Gmail) forKey:@"kLoginSuccessType"]; + [[NSUserDefaults standardUserDefaults]synchronize]; + } - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[super getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; - } showLoading:YES] openid:openid unionid:unionid access_token:access_token type:[NSString stringWithFormat:@"%lu", (unsigned long)ThirdLoginType_Gmail]]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[super getView] showErrorToast:YMLocalizedString(@"LoginPresenter1")]; + } showLoading:YES] openid:openid unionid:unionid access_token:access_token type:[NSString stringWithFormat:@"%lu", (unsigned long)ThirdLoginType_Gmail]]; } diff --git a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h index ec483fed..b5b28658 100644 --- a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h +++ b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.h @@ -24,8 +24,12 @@ NS_ASSUME_NONNULL_BEGIN /// @param phone 手机号 /// @param code 验证码 - (void)bindWithPhone:(NSString *)phone code:(NSString *)code phoneAreaCode:(NSString *)phoneAreaCode; - - +/// 使用手机号和密码登录 +/// @param phone 手机号 +/// @param password 验证码 +- (void)loginWithPhone:(NSString *)phone password:(NSString *)password; +///绑定授权码 +-(void)bindAuthorizationCodeWithAuthCode:(NSString *)authCode; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m index 114a969e..5a33f133 100644 --- a/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m +++ b/YuMi/Modules/YMLogin/Presenter/LoginVerifCodePresent.m @@ -49,9 +49,22 @@ [[AccountInfoStorage instance] saveAccountInfo:accountModel]; } [[self getView] loginSuccess]; - } showLoading:YES] phone:desPhone code:code client_secret:@"uyzjdhds" version:@"1" client_id:@"erban-client" grant_type:@"password" phoneAreaCode:phoneAreaCode]; + } showLoading:YES errorToast:YES] phone:desPhone code:code client_secret:@"uyzjdhds" version:@"1" client_id:@"erban-client" grant_type:@"password" phoneAreaCode:phoneAreaCode]; +} +/// 使用手机号和密码登录 +/// @param phone 手机号 +/// @param password 验证码 +- (void)loginWithPhone:(NSString *)phone password:(NSString *)password { + NSString * desPassword = [DESEncrypt encryptUseDES:password key:KeyWithType(KeyType_PasswordEncode)]; + NSString * desPhone = [DESEncrypt encryptUseDES:phone key:KeyWithType(KeyType_PasswordEncode)]; + [Api loginWithPassword:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + AccountModel * accountModel = [AccountModel modelWithDictionary:data.data]; + if (accountModel && accountModel.access_token.length > 0) { + [[AccountInfoStorage instance] saveAccountInfo:accountModel]; + } + [[self getView] loginSuccess]; + } showLoading:YES errorToast:YES] phone:desPhone password:desPassword client_secret:@"uyzjdhds" version:@"1" client_id:@"erban-client" grant_type:@"password"]; } - /// 绑定手机号 /// @param phone 手机号 /// @param code 验证码 @@ -62,5 +75,11 @@ [[self getView] bindPhoneSuccess]; } showLoading:YES] phone:desPhone code:code ticket:ticket phoneAreaCode:phoneAreaCode]; } - +-(void)bindAuthorizationCodeWithAuthCode:(NSString *)authCode{ + [Api bindAuthorizationCode:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] bindAuthorizationCodeSuccess]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]bindAuthorizationCodeFail]; + } showLoading:YES errorToast:YES] authCode:authCode]; +} @end diff --git a/YuMi/Modules/YMLogin/Protocol/LoginVerifCodeProtocol.h b/YuMi/Modules/YMLogin/Protocol/LoginVerifCodeProtocol.h index 26633d57..a514a723 100644 --- a/YuMi/Modules/YMLogin/Protocol/LoginVerifCodeProtocol.h +++ b/YuMi/Modules/YMLogin/Protocol/LoginVerifCodeProtocol.h @@ -16,6 +16,10 @@ NS_ASSUME_NONNULL_BEGIN - (void)loginSuccess; ///绑定手机号成功 - (void)bindPhoneSuccess; +///绑定授权码成功 +-(void)bindAuthorizationCodeSuccess; +///绑定授权码失败 +-(void)bindAuthorizationCodeFail; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.m b/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.m index ec63cf0f..5ff1a106 100644 --- a/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.m +++ b/YuMi/Modules/YMLogin/View/LoginFullInfoViewController.m @@ -17,6 +17,7 @@ #import "StatisticsServiceHelper.h" #import "AccountInfoStorage.h" #import "TTPopup.h" +#import "PIUserSexView.h" ///Model #import "ThirdUserInfo.h" ///P @@ -26,14 +27,18 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; @interface LoginFullInfoViewController () + +///背景 +@property(nonatomic,strong) UIImageView *bgImageView; +///背景 +@property(nonatomic,strong) UIView *bgView; ///完善资料 @property (nonatomic,strong) UILabel *titleLabel; ///性别后期无法修改 @property (nonatomic,strong) UILabel *remindLabel; ///昵称的背景 @property (nonatomic,strong) UIView * backView; -///容器 -@property (nonatomic,strong) UIStackView *stackView; + ///显示昵称 @property (nonatomic,strong) UILabel *nameLabel; ///输入框 @@ -43,21 +48,18 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; ///x性别的容器 @property (nonatomic,strong) UIStackView *sexStackView; ///男用户 -@property (nonatomic,strong) UIButton *maleButton; +@property (nonatomic,strong) PIUserSexView *maleView; ///女用户 -@property (nonatomic,strong) UIButton *femaleButton; +@property (nonatomic,strong) PIUserSexView*femaleView; ///下一步 @property (nonatomic,strong) UIButton *nextButton; -///邀请码 -@property (nonatomic,strong) UILabel *codeLabel; + ///邀请码的容器 @property (nonatomic,strong) UIView *codeContainView; ///邀请码输入框 @property (nonatomic,strong) UITextField *codeTextField; -///选填 -@property (nonatomic,strong) UILabel *codeDesLabel; -///本软件只提供给18 -@property (nonatomic,strong) UILabel *limitLabel; + + ///第三方的用户信息 @property (nonatomic,strong) ThirdUserInfo *thirdInfo; ///目前选择的性别 @@ -87,24 +89,35 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; #pragma mark - Private Method - (void)initSubViews { + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.bgImageView]; [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.remindLabel]; - [self.view addSubview:self.backView]; - [self.view addSubview:self.sexStackView]; - [self.view addSubview:self.codeLabel]; + [self.view addSubview:self.bgView]; + + [self.bgView addSubview:self.remindLabel]; + [self.bgView addSubview:self.sexStackView]; + + + + [self.bgView addSubview:self.backView]; + [self.view addSubview:self.codeContainView]; [self.view addSubview:self.nextButton]; - [self.view addSubview:self.limitLabel]; - [self.backView addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.nameLabel]; - [self.stackView addArrangedSubview:self.textField]; - [self.stackView addArrangedSubview:self.refreshButton]; + + + + + [self.backView addSubview:self.textField]; + [self.backView addSubview:self.refreshButton]; + [self.backView addSubview:self.nameLabel]; - [self.sexStackView addArrangedSubview:self.maleButton]; - [self.sexStackView addArrangedSubview:self.femaleButton]; + + + [self.sexStackView addArrangedSubview:self.maleView]; + [self.sexStackView addArrangedSubview:self.femaleView]; [self.codeContainView addSubview:self.codeTextField]; - [self.codeContainView addSubview:self.codeDesLabel]; + if ([self.presenter getThirdUserInfo] && [self.presenter getThirdUserInfo].userName.length > 0) { self.textField.text = [self.presenter getThirdUserInfo].userName; @@ -114,64 +127,89 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; } - (void)initSubViewConstraints { - [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.view).offset(60 + kSafeAreaTopHeight); - }]; - + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(418)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(kGetScaleWidth(128)); + make.leading.mas_equalTo(kGetScaleWidth(24)); + make.height.mas_equalTo(kGetScaleWidth(40)); + }]; + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.view); + make.top.mas_equalTo(kGetScaleWidth(192)); + }]; [self.remindLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(8); + make.left.right.equalTo(self.bgView).inset(kGetScaleWidth(10)); + make.top.mas_equalTo(kGetScaleWidth(48)); + make.height.mas_equalTo(kGetScaleWidth(22)); }]; + + [self.sexStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(38)); + make.right.mas_equalTo(-kGetScaleWidth(38)); + make.top.mas_equalTo(kGetScaleWidth(86)); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(52); - make.height.mas_equalTo(45); - make.top.mas_equalTo(self.remindLabel.mas_bottom).offset(49); + make.width.mas_equalTo(kGetScaleWidth(303)); + make.height.mas_equalTo(kGetScaleWidth(52)); + make.centerX.equalTo(self.bgView); + make.top.mas_equalTo(self.sexStackView.mas_bottom).offset(kGetScaleWidth(28)); }]; - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.backView).inset(25); - make.top.bottom.mas_equalTo(self.backView); - }]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(18)); + make.centerY.equalTo(self.backView); + }]; + [self.refreshButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(kGetScaleWidth(18)); + make.centerY.equalTo(self.backView); + make.right.equalTo(self.nameLabel.mas_left).mas_offset(-kGetScaleWidth(4)); + }]; + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(kGetScaleWidth(24)); + make.top.bottom.equalTo(self.backView); + make.right.equalTo(self.refreshButton.mas_left).mas_offset(-kGetScaleWidth(4)); + }]; + [self.maleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(132)); + make.height.mas_equalTo(kGetScaleWidth(108)); + }]; + [self.femaleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(132)); + make.height.mas_equalTo(kGetScaleWidth(108)); + }]; - [self.sexStackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backView); - make.top.mas_equalTo(self.backView.mas_bottom).offset(15); - }]; - - [self.codeLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.top.mas_equalTo(self.sexStackView.mas_bottom).offset(20); - }]; [self.codeContainView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.height.mas_equalTo(self.backView); - make.top.mas_equalTo(self.codeLabel.mas_bottom).offset(11); + make.top.mas_equalTo(self.backView.mas_bottom).offset(kGetScaleWidth(20)); }]; [self.codeTextField mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.codeContainView).offset(10); + make.left.mas_equalTo(self.codeContainView).offset(kGetScaleWidth(24)); make.top.bottom.mas_equalTo(self.codeContainView); - make.right.mas_equalTo(self.codeDesLabel.mas_left).offset(-5); + make.right.mas_equalTo(self.codeContainView).offset(-kGetScaleWidth(18)); }]; - [self.codeDesLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.codeContainView).offset(-25); - make.centerY.mas_equalTo(self.codeContainView); - }]; + [self.nextButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view).inset(52); - make.height.mas_equalTo(45); - make.top.mas_equalTo(self.codeContainView.mas_bottom).offset(75); + make.width.mas_equalTo(kGetScaleWidth(303)); + make.centerX.equalTo(self.bgView); + make.height.mas_equalTo(kGetScaleWidth(48)); + make.top.mas_equalTo(self.codeContainView.mas_bottom).offset(kGetScaleWidth(48)); }]; - [self.limitLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(self.view.mas_bottom).offset(-15); - }]; + } - (void)initEvents { @@ -191,7 +229,7 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; ///更新用户信息 - (void)updateUserInfo { - [self.presenter complectionInfoWithAvatar:[self getAvatarUrl] gender:self.maleButton.selected ? @"1":@"2" nick:self.textField.text inviteCode:self.codeTextField.text roomUid:nil shareUid:nil shareChannel:nil]; + [self.presenter complectionInfoWithAvatar:[self getAvatarUrl] gender:self.maleView.selected ? @"1":@"2" nick:self.textField.text inviteCode:self.codeTextField.text roomUid:nil shareUid:nil shareChannel:nil]; } ///获取头像 可能是从第三方获取的头像 @@ -248,27 +286,29 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; } } -- (void)refreshButtonAction:(UIButton *)sender { +- (void)refreshButtonAction { CAKeyframeAnimation *lAni = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"]; lAni.duration = 1; lAni.values=@[@0,@(M_PI*2)]; //使得动画结束后,保持动画效果 lAni.removedOnCompletion = NO; lAni.fillMode = kCAFillModeForwards; - [sender.layer addAnimation:lAni forKey:nil]; + [self.refreshButton.layer addAnimation:lAni forKey:nil]; [self.presenter randomRequestNick]; } -- (void)maleButtonAction:(UIButton *)sender { - self.femaleButton.selected = NO; - sender.selected = YES; - self.sexString = @"1"; +- (void)maleButtonAction:(UITapGestureRecognizer *)tap { + PIUserSexView * view = (PIUserSexView *)tap.view; + self.femaleView.selected = NO; + view.selected = YES; + self.sexString = @"1"; } -- (void)femaleButtonAction:(UIButton *)sender { - sender.selected = YES; - self.maleButton.selected = NO; - self.sexString = @"2"; +- (void)femaleButtonAction:(UITapGestureRecognizer *)tap { + PIUserSexView * view = (PIUserSexView *)tap.view; + view.selected = YES; + self.maleView.selected = NO; + self.sexString = @"2"; } #pragma mark - Getters And Setters @@ -276,14 +316,20 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; _sexString = sexString; [self updateNextButton]; } - +- (UIImageView *)bgImageView{ + if(!_bgImageView){ + _bgImageView = [[UIImageView alloc]init]; + _bgImageView.image = kImage(@"login_phone_pwd_bg"); + _bgImageView.contentMode = 2; + } + return _bgImageView; +} - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; _titleLabel.text = YMLocalizedString(@"LoginFullInfoViewController1"); - _titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Bold" size:18]; - _titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; - _titleLabel.textAlignment = NSTextAlignmentCenter; + _titleLabel.font = kFontBold(28); + _titleLabel.textColor = UIColorFromRGB(0x1F1B4F); } return _titleLabel; } @@ -291,30 +337,22 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; - (UILabel *)remindLabel { if (!_remindLabel) { _remindLabel = [[UILabel alloc] init]; - _remindLabel.text = YMLocalizedString(@"LoginFullInfoViewController2"); - _remindLabel.font = [UIFont systemFontOfSize:13]; - _remindLabel.textColor = [DJDKMIMOMColor secondTextColor]; + NSMutableAttributedString *textAtt = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"%@(%@)",YMLocalizedString(@"LoginFullInfoViewController8"),YMLocalizedString(@"LoginFullInfoViewController2")] attributes:@{NSFontAttributeName:kFontMedium(16),NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F)}]; + [textAtt addAttributes:@{NSFontAttributeName:kFontRegular(12),NSForegroundColorAttributeName:UIColorFromRGB(0x6D6B89)} range:[textAtt.string rangeOfString:[NSString stringWithFormat:@"(%@)",YMLocalizedString(@"LoginFullInfoViewController2")]]]; + _remindLabel.attributedText = textAtt; + _remindLabel.textAlignment = NSTextAlignmentCenter; } return _remindLabel; } -- (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentFill; - _stackView.spacing = 10; - } - return _stackView; -} + - (UIView *)backView { if (!_backView) { _backView = [[UIView alloc] init]; - _backView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _backView.backgroundColor = UIColorFromRGB(0xF5F6FA); _backView.layer.masksToBounds = YES; - _backView.layer.cornerRadius = 45/2; + _backView.layer.cornerRadius = kGetScaleWidth(52)/2; } return _backView; } @@ -322,9 +360,13 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; - (UILabel *)nameLabel { if (!_nameLabel) { _nameLabel = [[UILabel alloc] init]; - _nameLabel.text = YMLocalizedString(@"LoginFullInfoViewController3"); - _nameLabel.font = [UIFont systemFontOfSize:15]; - _nameLabel.textColor = [DJDKMIMOMColor secondTextColor]; + _nameLabel.text = YMLocalizedString(@"LoginFullInfoViewController9"); + _nameLabel.font = kFontRegular(14); + _nameLabel.textColor = UIColorFromRGB(0x1F1B4F); + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(refreshButtonAction)]; + + _nameLabel.userInteractionEnabled = YES; + [_nameLabel addGestureRecognizer:tap]; [_nameLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [_nameLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; @@ -335,11 +377,11 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; - (UITextField *)textField { if (!_textField) { _textField = [[UITextField alloc] init]; - _textField.textColor = [DJDKMIMOMColor mainTextColor]; - _textField.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15.f]; + _textField.textColor = UIColorFromRGB(0x1F1B4F); + _textField.font = kFontMedium(16); + _textField.placeholder = YMLocalizedString(@"LoginFullInfoViewController3"); _textField.borderStyle = UITextBorderStyleNone; _textField.tintColor = [DJDKMIMOMColor appMainColor]; - _textField.textAlignment = NSTextAlignmentRight; _textField.backgroundColor = [UIColor clearColor]; } return _textField; @@ -353,7 +395,7 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; [_refreshButton setEnlargeEdgeWithTop:0 right:0 bottom:0 left:10]; [_refreshButton setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [_refreshButton setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_refreshButton addTarget:self action:@selector(refreshButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_refreshButton addTarget:self action:@selector(refreshButtonAction) forControlEvents:UIControlEventTouchUpInside]; } return _refreshButton; } @@ -364,37 +406,39 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; _sexStackView.axis = UILayoutConstraintAxisHorizontal; _sexStackView.distribution = UIStackViewDistributionFill; _sexStackView.alignment = UIStackViewAlignmentCenter; - _sexStackView.spacing = 15; + _sexStackView.spacing = kGetScaleWidth(35); } return _sexStackView; } -- (UIButton *)maleButton { - if (!_maleButton) { - _maleButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_maleButton setImage:[UIImage imageNamed:@"login_full_info_male_normal"] forState:UIControlStateNormal]; - [_maleButton setImage:[UIImage imageNamed:@"login_full_info_male_select"] forState:UIControlStateSelected]; - [_maleButton addTarget:self action:@selector(maleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _maleButton; +- (PIUserSexView *)maleView { + if (!_maleView) { + _maleView = [[PIUserSexView alloc] init]; + _maleView.gender = GenderType_Male; + _maleView.selected = NO; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(maleButtonAction:)]; + [_maleView addGestureRecognizer:tap]; + } + return _maleView; } -- (UIButton *)femaleButton { - if (!_femaleButton) { - _femaleButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_femaleButton setImage:[UIImage imageNamed:@"login_full_info_female_normal"] forState:UIControlStateNormal]; - [_femaleButton setImage:[UIImage imageNamed:@"login_full_info_female_select"] forState:UIControlStateSelected]; - [_femaleButton addTarget:self action:@selector(femaleButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _femaleButton; +- (PIUserSexView *)femaleView { + if (!_femaleView) { + _femaleView = [[PIUserSexView alloc] init]; + _femaleView.gender = GenderType_Female; + _femaleView.selected = NO; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(femaleButtonAction:)]; + [_femaleView addGestureRecognizer:tap]; + } + return _femaleView; } - (UIView *)codeContainView { if (!_codeContainView) { _codeContainView = [[UIView alloc] init]; - _codeContainView.backgroundColor = [DJDKMIMOMColor appCellBackgroundColor]; + _codeContainView.backgroundColor = UIColorFromRGB(0xF5F6FA); _codeContainView.layer.masksToBounds= YES; - _codeContainView.layer.cornerRadius = 45/2; + _codeContainView.layer.cornerRadius = kGetScaleWidth(52)/2; } return _codeContainView; } @@ -402,64 +446,44 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey; - (UITextField *)codeTextField { if (!_codeTextField) { _codeTextField = [[UITextField alloc] init]; - _codeTextField.textColor = [DJDKMIMOMColor mainTextColor]; - _codeTextField.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15.f]; + _codeTextField.textColor = UIColorFromRGB(0x1F1B4F); + _codeTextField.font = kFontMedium(14); _codeTextField.borderStyle = UITextBorderStyleNone; - _codeTextField.tintColor = [DJDKMIMOMColor appMainColor]; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc]initWithString:YMLocalizedString(@"LoginFullInfoViewController5") attributes:@{NSFontAttributeName:kFontRegular(14),NSForegroundColorAttributeName:UIColorFromRGB(0xB3B3C3)}]; + _codeTextField.attributedPlaceholder = placeholder; _codeTextField.textAlignment = NSTextAlignmentLeft; _codeTextField.backgroundColor = [UIColor clearColor]; } return _codeTextField; } -- (UILabel *)codeLabel { - if (!_codeLabel) { - _codeLabel = [[UILabel alloc] init]; - _codeLabel.text = YMLocalizedString(@"LoginFullInfoViewController4"); - _codeLabel.font = [UIFont systemFontOfSize:18]; - _codeLabel.textAlignment = NSTextAlignmentCenter; - _codeLabel.textColor = [DJDKMIMOMColor secondTextColor]; - } - return _codeLabel; -} -- (UILabel *)codeDesLabel { - if (!_codeDesLabel) { - _codeDesLabel = [[UILabel alloc] init]; - _codeDesLabel.text = YMLocalizedString(@"LoginFullInfoViewController5"); - _codeDesLabel.font = [UIFont systemFontOfSize:15]; - _codeDesLabel.textColor = [DJDKMIMOMColor textThirdColor]; - [_codeDesLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - } - return _codeDesLabel; -} - (UIButton *)nextButton{ if (!_nextButton) { _nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; _nextButton.layer.masksToBounds = YES; - _nextButton.layer.cornerRadius = 45/2.f; + _nextButton.layer.cornerRadius = kGetScaleWidth(48)/2.f; [_nextButton setTitle:YMLocalizedString(@"LoginFullInfoViewController6") forState:UIControlStateNormal]; - _nextButton.titleLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:18]; - [_nextButton setTitleColor:[DJDKMIMOMColor confirmButtonTextColor] forState:UIControlStateNormal]; + _nextButton.titleLabel.font = kFontMedium(16); + [_nextButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; _nextButton.enabled = NO; UIImage *image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)]; - [_nextButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor disableButtonColor], [DJDKMIMOMColor disableButtonColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateDisabled]; [_nextButton setBackgroundImage:image forState:UIControlStateNormal]; [_nextButton addTarget:self action:@selector(nextButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _nextButton; } -- (UILabel *)limitLabel { - if (!_limitLabel) { - _limitLabel = [[UILabel alloc] init]; - _limitLabel.text = YMLocalizedString(@"LoginFullInfoViewController7"); - _limitLabel.textAlignment = NSTextAlignmentCenter; - _limitLabel.font = [UIFont systemFontOfSize:12]; - _limitLabel.textColor = [DJDKMIMOMColor textThirdColor]; - } - return _limitLabel; -} +- (UIView *)bgView{ + if(!_bgView){ + UIView *bgView = [UIView new]; + bgView.backgroundColor = [UIColor whiteColor]; + bgView.layer.cornerRadius = kGetScaleWidth(20); + bgView.layer.masksToBounds = YES; + _bgView = bgView; + } + return _bgView; +} @end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/PIUserSexView.h b/YuMi/Modules/YMLogin/View/NewLogin/PIUserSexView.h new file mode 100644 index 00000000..ac3e844f --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/PIUserSexView.h @@ -0,0 +1,17 @@ +// +// PIUserSexView.h +// YuMi +// +// Created by duoban on 2023/8/14. +// + +#import +#import "YUMINNNN.h" +NS_ASSUME_NONNULL_BEGIN + +@interface PIUserSexView : UIView +@property (nonatomic,assign) GenderType gender; +@property (nonatomic,assign) BOOL selected; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/PIUserSexView.m b/YuMi/Modules/YMLogin/View/NewLogin/PIUserSexView.m new file mode 100644 index 00000000..d3a381dd --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/PIUserSexView.m @@ -0,0 +1,137 @@ +// +// PIUserSexView.m +// YuMi +// +// Created by duoban on 2023/8/14. +// + +#import "PIUserSexView.h" +@interface PIUserSexView () +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///头像 +@property (nonatomic,strong) UIImageView *logoImageView; +///性别图标 +@property (nonatomic,strong) UIImageView *sexImageView; +///性别 +@property (nonatomic,strong) UILabel *sexLb; +@end +@implementation PIUserSexView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +- (void)initSubViews { + [self addSubview:self.backImageView]; + [self.backImageView addSubview:self.logoImageView]; + [self.backImageView addSubview:self.sexLb]; + [self.backImageView addSubview:self.sexImageView]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(66), kGetScaleWidth(66))); + make.centerX.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.backImageView).offset(kGetScaleWidth(8)); + }]; + + [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(16), kGetScaleWidth(16))); + make.right.mas_equalTo(self.backImageView.mas_centerX).offset(-1.5); + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(kGetScaleWidth(8)); + }]; + + [self.sexLb mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView.mas_centerX).offset(1.5); + make.centerY.mas_equalTo(self.sexImageView); + }]; +} + +- (void)setGender:(GenderType)gender { + _gender = gender; + switch (_gender) { + case GenderType_Male: + { + self.logoImageView.image = [UIImage imageNamed:@"login_full_male_logo"]; + self.sexLb.text = YMLocalizedString(@"PIUserSexView0"); + self.sexImageView.image = [UIImage imageNamed:@"login_full_male"]; + } + break; + case GenderType_Female: + { + self.logoImageView.image = [UIImage imageNamed:@"login_full_female_logo"]; + self.sexLb.text = YMLocalizedString(@"PIUserSexView1"); + self.sexImageView.image = [UIImage imageNamed:@"login_full_female"]; + } + break; + + default: + break; + } +} + +- (void)setSelected:(BOOL)selected { + _selected = selected; + if (_selected) { + if (self.gender == GenderType_Male) { + self.backImageView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#EBF5FF"],[DJDKMIMOMColor colorWithHexString:@"#FFFFFF"]] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)]; + self.backImageView.layer.borderColor = [DJDKMIMOMColor colorWithHexString:@"#B8E5FF"].CGColor; + } else { + self.backImageView.image = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#FFEBFA"],[DJDKMIMOMColor colorWithHexString:@"#FFFFFF"]] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)]; + self.backImageView.layer.borderColor = [DJDKMIMOMColor colorWithHexString:@"#FFB8E2"].CGColor; + } + + } else { + self.backImageView.image = [UIImage imageWithColor:[UIColor clearColor]]; + self.backImageView.layer.borderColor = [DJDKMIMOMColor colorWithHexString:@"#FAFBFC"].CGColor; + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.masksToBounds = YES; + _backImageView.layer.borderWidth = 1; + _backImageView.layer.cornerRadius = kGetScaleWidth(18); + } + return _backImageView; +} + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + } + return _logoImageView; +} + +- (UIImageView *)sexImageView { + if (!_sexImageView) { + _sexImageView = [[UIImageView alloc] init]; + _sexImageView.userInteractionEnabled = YES; + } + return _sexImageView; +} + +- (UILabel *)sexLb { + if (!_sexLb) { + _sexLb = [[UILabel alloc] init]; + _sexLb.font = kFontMedium(14); + _sexLb.textColor = [DJDKMIMOMColor colorWithHexString:@"#1F1A4E"]; + } + return _sexLb; +} + + +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m index 2f360dfe..3fb533cb 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPForgetPwdViewController.m @@ -17,7 +17,10 @@ #import "XPLoginAraeViewController.h" @interface XPForgetPwdViewController () - +///背景 +@property(nonatomic,strong) UIImageView *bgImageView; +///返回 +@property(nonatomic,strong) UIButton *backBnt; /// 标题 @property (nonatomic, strong) UILabel *titleLabel; /// 手机号输入框 @@ -33,7 +36,9 @@ @end @implementation XPForgetPwdViewController - +- (BOOL)isHiddenNavBar { + return YES; +} - (LoginForgetPasswordPresent *)createPresenter { return [[LoginForgetPasswordPresent alloc] init]; } @@ -47,39 +52,65 @@ } - (void)createUI { + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.bgImageView]; + [self.view addSubview:self.backBnt]; [self.view addSubview:self.titleLabel]; + UIView *bgView = [UIView new]; + bgView.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:bgView]; + bgView.layer.cornerRadius = kGetScaleWidth(20); + bgView.layer.masksToBounds = YES; [self.view addSubview:self.phoneInputView]; [self.view addSubview:self.codeInputView]; [self.view addSubview:self.pwdInputView]; [self.view addSubview:self.sureBtn]; + + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(418)); + }]; + [self.backBnt mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(20)); + make.width.mas_equalTo(kGetScaleWidth(28)); + make.height.mas_equalTo(kGetScaleWidth(28)); + make.top.mas_equalTo(kGetScaleWidth(52)); + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(kStatusBarHeight); - make.height.mas_equalTo(44); + make.top.equalTo(self.backBnt.mas_bottom).mas_offset(kGetScaleWidth(48)); + make.leading.mas_equalTo(kGetScaleWidth(24)); + make.height.mas_equalTo(kGetScaleWidth(40)); + }]; + [bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.view); + make.top.mas_equalTo(kGetScaleWidth(257)); }]; [self.phoneInputView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(38); - make.right.mas_equalTo(-38); - make.top.mas_equalTo(139.0/812.0*KScreenHeight); - make.height.mas_equalTo(66); + make.centerX.equalTo(self.view); + make.width.mas_equalTo(kGetScaleWidth(303)); + make.top.mas_equalTo(kGetScaleWidth(296)); + make.height.mas_equalTo(kGetScaleWidth(52)); }]; [self.codeInputView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.phoneInputView); - make.right.mas_equalTo(self.phoneInputView); - make.top.mas_equalTo(self.phoneInputView.mas_bottom).offset(16); - make.height.mas_equalTo(self.phoneInputView); + make.centerX.equalTo(self.view); + make.width.mas_equalTo(kGetScaleWidth(303)); + make.top.mas_equalTo(self.phoneInputView.mas_bottom).offset(kGetScaleWidth(20)); + make.height.mas_equalTo(kGetScaleWidth(52)); }]; [self.pwdInputView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.phoneInputView); - make.right.mas_equalTo(self.phoneInputView); - make.top.mas_equalTo(self.codeInputView.mas_bottom).offset(16); - make.height.mas_equalTo(self.phoneInputView); + make.centerX.equalTo(self.view); + make.width.mas_equalTo(kGetScaleWidth(303)); + make.top.mas_equalTo(self.codeInputView.mas_bottom).offset(kGetScaleWidth(20)); + make.height.mas_equalTo(kGetScaleWidth(52)); }]; [self.sureBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.pwdInputView.mas_bottom).offset(51); + make.top.mas_equalTo(self.pwdInputView.mas_bottom).offset(kGetScaleWidth(48)); make.centerX.mas_equalTo(self.view); - make.width.height.mas_equalTo(96); + make.height.mas_equalTo(kGetScaleWidth(48)); + make.width.mas_equalTo(kGetScaleWidth(303)); }]; } @@ -137,15 +168,18 @@ [self.navigationController popViewControllerAnimated:YES]; } - +-(void)backViewAction1{ + [self.navigationController popViewControllerAnimated:YES]; +} #pragma mark - 懒加载 - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = kFontBold(28); + _titleLabel.textColor = UIColorFromRGB(0x1F1B4F); _titleLabel.text = YMLocalizedString(@"XPForgetPwdViewController3"); - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium]; - _titleLabel.textColor = UIColor.whiteColor; + } return _titleLabel; } @@ -156,7 +190,7 @@ _phoneInputView.areaStackView.hidden = NO; _phoneInputView.delegate = self; NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPForgetPwdViewController4")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0xB3B3C3) range:NSMakeRange(0, placeholder.length)]; _phoneInputView.inputTextField.attributedPlaceholder = placeholder; _phoneInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; } @@ -168,7 +202,7 @@ _codeInputView = [[XPLoginInputView alloc] init]; _codeInputView.smsCodeBtn.hidden = NO; NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPForgetPwdViewController5")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0xB3B3C3) range:NSMakeRange(0, placeholder.length)]; _codeInputView.inputTextField.attributedPlaceholder = placeholder; _codeInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; _codeInputView.delegate = self; @@ -180,7 +214,7 @@ if (!_pwdInputView) { _pwdInputView = [[XPLoginInputView alloc] init]; NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPForgetPwdViewController6")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0xB3B3C3) range:NSMakeRange(0, placeholder.length)]; _pwdInputView.inputTextField.attributedPlaceholder = placeholder; _pwdInputView.inputTextField.keyboardType = UIKeyboardTypeAlphabet; _pwdInputView.inputTextField.secureTextEntry = YES; @@ -191,11 +225,41 @@ - (UIButton *)sureBtn { if (!_sureBtn) { _sureBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_sureBtn setImage:[UIImage imageNamed:@"login_next"] forState:UIControlStateNormal]; - [_sureBtn setImage:[UIImage imageNamed:@"login_next_disable"] forState:UIControlStateSelected]; + + UIImage *nextImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(303), kGetScaleWidth(48))]; + UIImage *disableImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xD1F9FF),UIColorFromRGB(0xDEE4FF),UIColorFromRGB(0xEEDCFF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(303), kGetScaleWidth(48))]; + + [_sureBtn setImage:nextImage forState:UIControlStateNormal]; + [_sureBtn setImage:disableImage forState:UIControlStateDisabled]; + _sureBtn.layer.cornerRadius = kGetScaleWidth(48)/2; + _sureBtn.layer.masksToBounds = YES; + + + UILabel *titleView = [UILabel labelInitWithText:YMLocalizedString(@"XPLoginPhoneViewController8") font:kFontMedium(16) textColor:[UIColor whiteColor]]; + titleView.textAlignment = NSTextAlignmentCenter; + [_sureBtn addSubview:titleView]; + [titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.sureBtn); + }]; [_sureBtn addTarget:self action:@selector(sureBtnClicked) forControlEvents:UIControlEventTouchUpInside]; } return _sureBtn; } - +- (UIImageView *)bgImageView{ + if(!_bgImageView){ + _bgImageView = [[UIImageView alloc]init]; + _bgImageView.image = kImage(@"login_phone_pwd_bg"); + _bgImageView.contentMode = 2; + } + return _bgImageView; +} +- (UIButton *)backBnt{ + if(!_backBnt){ + _backBnt = [UIButton new]; + [_backBnt setImage:kImage(@"common_nav_back") forState:UIControlStateNormal]; + [_backBnt addTarget:self action:@selector(backViewAction1) forControlEvents:UIControlEventTouchUpInside]; + [_backBnt setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _backBnt; +} @end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAuthCodeVC.h b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAuthCodeVC.h new file mode 100644 index 00000000..4a5626b9 --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAuthCodeVC.h @@ -0,0 +1,22 @@ +// +// XPLoginAuthCodeVC.h +// YuMi +// +// Created by duoban on 2023/8/11. +// + +#import "MvpViewController.h" + +@protocol XPLoginAuthCodeVCDelegate + +-(void)bindCodeSuccess; + +@end + +NS_ASSUME_NONNULL_BEGIN + +@interface XPLoginAuthCodeVC : MvpViewController +@property(nonatomic,weak) iddelegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAuthCodeVC.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAuthCodeVC.m new file mode 100644 index 00000000..8433b9ae --- /dev/null +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginAuthCodeVC.m @@ -0,0 +1,155 @@ +// +// XPLoginAuthCodeVC.m +// YuMi +// +// Created by duoban on 2023/8/11. +// + +#import "XPLoginAuthCodeVC.h" +#import "XPLoginInputView.h" +#import +#import "LoginVerifCodePresent.h" +@interface XPLoginAuthCodeVC () +///背景 +@property(nonatomic,strong) UIImageView *bgImageView; + +/// 手机号登录 +@property (nonatomic, strong) UILabel *titleLabel; +/// 手机号输入框 +@property (nonatomic, strong) XPLoginInputView *codeInputView; +/// 登录按钮 +@property (nonatomic, strong) UIButton *loginBtn; +@end + +@implementation XPLoginAuthCodeVC +- (LoginVerifCodePresent *)createPresenter { + return [[LoginVerifCodePresent alloc] init]; +} +- (void)viewDidLoad { + [super viewDidLoad]; + [self installUI]; + [self installConstraints]; + [self racBind]; +} +-(void)installUI{ + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.bgImageView]; + [self.view addSubview:self.titleLabel]; + + +} +-(void)installConstraints{ + UIView *bgView = [UIView new]; + bgView.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:bgView]; + bgView.layer.cornerRadius = kGetScaleWidth(20); + bgView.layer.masksToBounds = YES; + [self.view addSubview:self.codeInputView]; + [self.view addSubview:self.loginBtn]; + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(418)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.view); + make.top.mas_equalTo(kGetScaleWidth(128)); + make.leading.mas_equalTo(kGetScaleWidth(24)); + make.height.mas_equalTo(kGetScaleWidth(40)); + }]; + [bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.view); + make.top.mas_equalTo(kGetScaleWidth(192)); + }]; + [self.codeInputView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self.view); + make.width.mas_equalTo(kGetScaleWidth(303)); + make.top.mas_equalTo(kGetScaleWidth(260)); + make.height.mas_equalTo(kGetScaleWidth(52)); + }]; + [self.loginBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.codeInputView.mas_bottom).offset(kGetScaleWidth(48)); + make.centerX.mas_equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(48)); + make.width.mas_equalTo(kGetScaleWidth(303)); + }]; +} +- (void)racBind { + + RAC(self.loginBtn, enabled) = [[RACSignal combineLatest:@[self.codeInputView.inputTextField.rac_textSignal] reduce:^id _Nonnull(NSString *account){ + + return @(account.length > 0); + }] takeUntil:self.rac_willDeallocSignal]; +} +-(void)loginBtnClicked{ + [self showLoading]; + [self.presenter bindAuthorizationCodeWithAuthCode:self.codeInputView.inputTextField.text]; +} +#pragma mark - LoginVerifCodeProtocol +- (void)bindAuthorizationCodeSuccess{ + [self hideHUD]; + [self showSuccessToast:YMLocalizedString(@"XPLoginAuthCodeVC2")]; + [self dismissViewControllerAnimated:YES completion:nil]; + if(self.delegate && [self.delegate respondsToSelector:@selector(bindCodeSuccess)]){ + [self.delegate bindCodeSuccess]; + } + self.loginBtn.enabled = YES; +} +-(void)bindAuthorizationCodeFail{ + [self hideHUD]; + self.loginBtn.enabled = YES; +} +#pragma mark - 懒加载 + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = YMLocalizedString(@"XPLoginAuthCodeVC0"); + _titleLabel.font = kFontBold(28); + _titleLabel.textColor = UIColorFromRGB(0x1F1B4F); + } + return _titleLabel; +} +- (UIImageView *)bgImageView{ + if(!_bgImageView){ + _bgImageView = [[UIImageView alloc]init]; + _bgImageView.image = kImage(@"login_phone_pwd_bg"); + _bgImageView.contentMode = 2; + } + return _bgImageView; +} +- (XPLoginInputView *)codeInputView { + if (!_codeInputView) { + _codeInputView = [[XPLoginInputView alloc] init]; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginAuthCodeVC1")]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0xB3B3C3) range:NSMakeRange(0, placeholder.length)]; + _codeInputView.inputTextField.attributedPlaceholder = placeholder; + _codeInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; + + } + return _codeInputView; +} +- (UIButton *)loginBtn { + if (!_loginBtn) { + _loginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + + UIImage *nextImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(303), kGetScaleWidth(48))]; + UIImage *disableImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xD1F9FF),UIColorFromRGB(0xDEE4FF),UIColorFromRGB(0xEEDCFF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(303), kGetScaleWidth(48))]; + + [_loginBtn setImage:nextImage forState:UIControlStateNormal]; + [_loginBtn setImage:disableImage forState:UIControlStateDisabled]; + _loginBtn.layer.cornerRadius = kGetScaleWidth(48)/2; + _loginBtn.layer.masksToBounds = YES; + + + UILabel *titleView = [UILabel labelInitWithText:YMLocalizedString(@"XPLoginAuthCodeVC3") font:kFontMedium(16) textColor:[UIColor whiteColor]]; + titleView.textAlignment = NSTextAlignmentCenter; + [_loginBtn addSubview:titleView]; + [titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.loginBtn); + }]; + [_loginBtn addTarget:self action:@selector(loginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _loginBtn; +} +@end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.m index b8c40c57..74062822 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginInputView.m @@ -22,10 +22,9 @@ - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { - self.backgroundColor = UIColor.clearColor; - self.layer.cornerRadius = 66.0/2.0; - self.layer.borderWidth = 1; - self.layer.borderColor = [UIColor.whiteColor colorWithAlphaComponent:0.2].CGColor; + self.backgroundColor = UIColorFromRGB(0xF5F6FA); + self.layer.cornerRadius = kGetScaleWidth(52)/2; + self.layer.masksToBounds = YES; [self createUI]; } @@ -37,7 +36,7 @@ stackView.axis = UILayoutConstraintAxisHorizontal; stackView.distribution = UIStackViewDistributionFill; stackView.alignment = UIStackViewAlignmentCenter; - stackView.spacing = 5; + stackView.spacing = kGetScaleWidth(8); [self addSubview:stackView]; @@ -49,8 +48,8 @@ /// 区号 UIButton *areaCodeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [areaCodeBtn setTitle:@"+852" forState:UIControlStateNormal]; - [areaCodeBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - areaCodeBtn.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightRegular]; + [areaCodeBtn setTitleColor:UIColorFromRGB(0x1F1B4F) forState:UIControlStateNormal]; + areaCodeBtn.titleLabel.font = kFontMedium(16); _areaCodeBtn = areaCodeBtn; areaCodeBtn.userInteractionEnabled = NO; @@ -58,7 +57,7 @@ areaStackView.axis = UILayoutConstraintAxisHorizontal; areaStackView.distribution = UIStackViewDistributionFill; areaStackView.alignment = UIStackViewAlignmentCenter; - areaStackView.spacing = 2; + areaStackView.spacing = kGetScaleWidth(8); UIButton *areaBtn = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -74,41 +73,44 @@ /// 输入框 UITextField *inputTextField = [[UITextField alloc] init]; - inputTextField.textColor = UIColor.whiteColor; - inputTextField.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular]; + inputTextField.textColor = UIColorFromRGB(0x1F1B4F); + inputTextField.font = kFontRegular(14); [stackView addArrangedSubview:inputTextField]; self.inputTextField = inputTextField; /// 获取验证码 UIButton *smsCodeBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [smsCodeBtn setTitle:YMLocalizedString(@"XPLoginInputView0") forState:UIControlStateNormal]; - [smsCodeBtn setTitleColor:UIColorFromRGB(0xFB486A) forState:UIControlStateNormal]; - smsCodeBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + [smsCodeBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + smsCodeBtn.titleLabel.font = kFontMedium(14); + smsCodeBtn.layer.cornerRadius = kGetScaleWidth(38)/2; + smsCodeBtn.layer.masksToBounds = YES; + smsCodeBtn.backgroundColor = UIColorFromRGB(0x9168FA); [smsCodeBtn addTarget:self action:@selector(smsCodeBtnClicked) forControlEvents:UIControlEventTouchUpInside]; [stackView addArrangedSubview:smsCodeBtn]; self.smsCodeBtn = smsCodeBtn; [stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(15); - make.right.mas_equalTo(-15); + make.left.mas_equalTo(kGetScaleWidth(24)); + make.right.mas_equalTo(-kGetScaleWidth(24)); make.top.bottom.mas_equalTo(0); }]; [areaImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(18); - make.height.mas_equalTo(18); + make.width.mas_equalTo(kGetScaleWidth(12)); + make.height.mas_equalTo(kGetScaleWidth(8)); }]; [areaCodeBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(50); + make.width.mas_lessThanOrEqualTo(kGetScaleWidth(60)); make.height.mas_equalTo(stackView); }]; [inputTextField mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(stackView); }]; [smsCodeBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(80); - make.height.mas_equalTo(stackView); + make.width.mas_equalTo(kGetScaleWidth(102)); + make.height.mas_equalTo(kGetScaleWidth(38)); }]; [areaBtn mas_makeConstraints:^(MASConstraintMaker *make) { diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m index 59e59d4e..312c8175 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPhoneViewController.m @@ -16,33 +16,57 @@ #import "XPLoginAraeViewController.h" #import "LoginVerifCodePresent.h" #import "LoginVerifCodeProtocol.h" +#import "XPForgetPwdViewController.h" @interface XPLoginPhoneViewController () +///背景 +@property(nonatomic,strong) UIImageView *bgImageView; +///返回 +@property(nonatomic,strong) UIButton *backBnt; /// 手机号登录 @property (nonatomic, strong) UILabel *titleLabel; /// 未注册的手机号自动登录 @property (nonatomic, strong) UILabel *despLabel; +///选择类型背景 +@property(nonatomic,strong) UIImageView *chooseTypeView; +///选择手机登录 +@property(nonatomic,strong) UIButton *choosePhoneBtn; +///选择密码登录 +@property(nonatomic,strong) UIButton *choosePsdBtn; /// 手机号输入框 @property (nonatomic, strong) XPLoginInputView *phoneInputView; /// 验证码输入框 @property (nonatomic, strong) XPLoginInputView *codeInputView; + + +///// 账号登录手机号输入框 +@property (nonatomic, strong) XPLoginInputView *accountView; +/// 账号登录密码输入框 +@property (nonatomic, strong) XPLoginInputView *accountPwdView; +/// 忘记密码 +@property (nonatomic, strong) UIButton *forgetBtn; + /// 登录按钮 @property (nonatomic, strong) UIButton *loginBtn; -/// 密码登录 -@property (nonatomic, strong) UIButton *pwdLoginBtn; + +///区号 @property (nonatomic,copy) NSString *phoneAreaCode; +///类型,0,密码,1.手机 +@property(nonatomic,assign) int selectType; @end @implementation XPLoginPhoneViewController - +- (BOOL)isHiddenNavBar { + return YES; +} - (LoginVerifCodePresent *)createPresenter { return [[LoginVerifCodePresent alloc] init]; } - (void)viewDidLoad { - + self.selectType = 0; self.phoneAreaCode = @"852"; [super viewDidLoad]; [self createUI]; @@ -50,48 +74,104 @@ } - (void)createUI { - + self.view.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:self.bgImageView]; + [self.view addSubview:self.backBnt]; [self.view addSubview:self.titleLabel]; - [self.view addSubview:self.despLabel]; + + [self.view addSubview:self.chooseTypeView]; + [self.chooseTypeView addSubview:self.choosePhoneBtn]; + [self.chooseTypeView addSubview:self.choosePsdBtn]; + UIView *bgView = [UIView new]; + bgView.backgroundColor = [UIColor whiteColor]; + [self.view addSubview:bgView]; [self.view addSubview:self.phoneInputView]; [self.view addSubview:self.codeInputView]; - [self.view addSubview:self.loginBtn]; - [self.view addSubview:self.pwdLoginBtn]; + [self.view addSubview:self.accountView]; + [self.view addSubview:self.accountPwdView]; + [self.view addSubview:self.forgetBtn]; + [self.view addSubview:self.loginBtn]; + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(418)); + }]; + [self.backBnt mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(20)); + make.width.mas_equalTo(kGetScaleWidth(28)); + make.height.mas_equalTo(kGetScaleWidth(28)); + make.top.mas_equalTo(kGetScaleWidth(52)); + }]; [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(146.0/812.0*KScreenHeight); + make.top.equalTo(self.backBnt.mas_bottom).mas_offset(kGetScaleWidth(48)); + make.leading.mas_equalTo(kGetScaleWidth(24)); + make.height.mas_equalTo(kGetScaleWidth(40)); }]; - [self.despLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(4); + + [self.chooseTypeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.titleLabel.mas_bottom).mas_offset(kGetScaleWidth(24)); + make.left.right.equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(65)); + }]; + + [self.choosePsdBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(16)); + make.height.mas_equalTo(kGetScaleWidth(22)); + make.width.mas_equalTo(KScreenWidth/2); + make.left.mas_equalTo(0); + }]; + [self.choosePhoneBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(16)); + make.height.mas_equalTo(kGetScaleWidth(22)); + make.width.mas_equalTo(KScreenWidth/2); + make.right.mas_equalTo(0); + }]; + [bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.view); + make.top.equalTo(self.chooseTypeView.mas_bottom); }]; [self.phoneInputView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(38); - make.right.mas_equalTo(-38); - make.top.mas_equalTo(self.despLabel.mas_bottom).offset(23); - make.height.mas_equalTo(66); + make.centerX.equalTo(self.view); + make.width.mas_equalTo(kGetScaleWidth(303)); + make.top.mas_equalTo(self.chooseTypeView.mas_bottom).offset(kGetScaleWidth(39)); + make.height.mas_equalTo(kGetScaleWidth(52)); }]; [self.codeInputView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.phoneInputView); - make.right.mas_equalTo(self.phoneInputView); - make.top.mas_equalTo(self.phoneInputView.mas_bottom).offset(16); - make.height.mas_equalTo(self.phoneInputView); + make.centerX.equalTo(self.view); + make.width.mas_equalTo(kGetScaleWidth(303)); + make.top.mas_equalTo(self.phoneInputView.mas_bottom).offset(kGetScaleWidth(20)); + make.height.mas_equalTo(kGetScaleWidth(52)); + }]; + + [self.accountView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.phoneInputView); + }]; + [self.accountPwdView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.codeInputView); + }]; + [self.forgetBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(-kGetScaleWidth(52)); + make.height.mas_equalTo(kGetScaleWidth(17)); + make.top.equalTo(self.accountPwdView.mas_bottom).mas_offset(kGetScaleWidth(8)); }]; [self.loginBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.codeInputView.mas_bottom).offset(51); - make.centerX.mas_equalTo(self.view); - make.width.height.mas_equalTo(96); - }]; - [self.pwdLoginBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.loginBtn.mas_bottom).offset(24); + make.top.mas_equalTo(self.codeInputView.mas_bottom).offset(kGetScaleWidth(48)); make.centerX.mas_equalTo(self.view); + make.height.mas_equalTo(kGetScaleWidth(48)); + make.width.mas_equalTo(kGetScaleWidth(303)); }]; + } - (void)racBind { - RAC(self.loginBtn, enabled) = [[RACSignal combineLatest:@[self.phoneInputView.inputTextField.rac_textSignal, self.codeInputView.inputTextField.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString* smsCode){ + @weakify(self); + RAC(self.loginBtn, enabled) = [[RACSignal combineLatest:@[self.phoneInputView.inputTextField.rac_textSignal, self.codeInputView.inputTextField.rac_textSignal,self.accountView.inputTextField.rac_textSignal,self.accountPwdView.inputTextField.rac_textSignal] reduce:^id _Nonnull(NSString *phone, NSString* smsCode,NSString *account,NSString *accountPwd){ + @strongify(self); + if(self.selectType == 0){ + return @((account.length > 0) && accountPwd.length >= 6); + } return @((phone.length > 0) && smsCode.length >= 5); }] takeUntil:self.rac_willDeallocSignal]; } @@ -99,16 +179,23 @@ /// 登录 - (void)loginBtnClicked { + if(self.selectType == 0){ + NSString *phone = self.accountView.inputTextField.text; + NSString *password = self.accountPwdView.inputTextField.text; + [self.presenter loginWithPhone:phone password:password]; + return; + } + + NSString *phone = self.phoneInputView.inputTextField.text; NSString *smsCode = self.codeInputView.inputTextField.text; NSString * phoneStr = [NSString stringWithFormat:@"%@%@",self.phoneAreaCode, phone]; [self.presenter loginWithPhone:phoneStr code:smsCode phoneAreaCode:self.phoneAreaCode]; } -/// 密码登录 -- (void)pwdLoginBtnClicked { - XPLoginPwdViewController *pwdVC = [[XPLoginPwdViewController alloc] init]; - [self.navigationController pushViewController:pwdVC animated:YES]; +- (void)forgetBtnClicked { + XPForgetPwdViewController *forgetVC = [[XPForgetPwdViewController alloc] init]; + [self.navigationController pushViewController:forgetVC animated:YES]; } #pragma mark - XPLoginInputViewDelegate @@ -119,7 +206,7 @@ [self showErrorToast:YMLocalizedString(@"XPLoginPhoneViewController0")]; return; } - [self.presenter phoneSmsCode:phone type:GetSmsType_Regist phoneAreaCode:self.phoneAreaCode]; + [self.presenter phoneSmsCode:[NSString stringWithFormat:@"%@%@",self.phoneAreaCode,phone] type:GetSmsType_Regist phoneAreaCode:self.phoneAreaCode]; } - (void)areaListAction { @@ -137,6 +224,7 @@ #pragma mark - LoginVerifCodeProtocol - (void)loginSuccess { + [[NSUserDefaults standardUserDefaults]removeObjectForKey:@"kLoginSuccessType"]; [self showSuccessToast:YMLocalizedString(@"XPLoginPhoneViewController1")]; UIViewController *vc = self.presentingViewController; while (vc.presentingViewController) { @@ -146,7 +234,9 @@ [self.navigationController popToRootViewControllerAnimated:NO]; } - +-(void)backViewAction{ + [self.navigationController popViewControllerAnimated:YES]; +} #pragma mark - LoginProtocol - (void)phoneSmsCodeSuccess { @@ -154,14 +244,34 @@ [self.codeInputView fireTimer]; } + +-(void)setSelectType:(int)selectType{ + _selectType = selectType; + _chooseTypeView.image = _selectType == 0 ? kImage(@"login_choose_phone_bg"): kImage(@"login_choose_pwd_bg"); + _choosePhoneBtn.selected = _selectType != 0; + _choosePsdBtn.selected = _selectType == 0; + _forgetBtn.hidden = _selectType != 0; + + _phoneInputView.hidden = _selectType == 0; + _codeInputView.hidden = _selectType == 0; + _accountView.hidden = _selectType != 0; + _accountPwdView.hidden = _selectType != 0; + +} +-(void)choosePhoneAction{ + self.selectType = 1; +} +-(void)choosePwdAction{ + self.selectType = 0; +} #pragma mark - 懒加载 - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; - _titleLabel.text = YMLocalizedString(@"XPLoginPhoneViewController3"); - _titleLabel.font = [UIFont systemFontOfSize:24 weight:UIFontWeightMedium]; - _titleLabel.textColor = UIColor.whiteColor; + _titleLabel.text = @"Welcome to Piko!"; + _titleLabel.font = kFontBold(28); + _titleLabel.textColor = UIColorFromRGB(0x1F1B4F); } return _titleLabel; } @@ -182,9 +292,10 @@ _phoneInputView.areaStackView.hidden = NO; _phoneInputView.delegate = self; NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPhoneViewController5")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0xB3B3C3) range:NSMakeRange(0, placeholder.length)]; _phoneInputView.inputTextField.attributedPlaceholder = placeholder; _phoneInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; + _phoneInputView.hidden = YES; } return _phoneInputView; } @@ -194,10 +305,11 @@ _codeInputView = [[XPLoginInputView alloc] init]; _codeInputView.smsCodeBtn.hidden = NO; NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPhoneViewController6")]; - [placeholder addAttribute:NSForegroundColorAttributeName value:UIColor.whiteColor range:NSMakeRange(0, placeholder.length)]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0xB3B3C3) range:NSMakeRange(0, placeholder.length)]; _codeInputView.inputTextField.attributedPlaceholder = placeholder; _codeInputView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; _codeInputView.delegate = self; + _codeInputView.hidden = YES; } return _codeInputView; } @@ -205,24 +317,112 @@ - (UIButton *)loginBtn { if (!_loginBtn) { _loginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_loginBtn setImage:[UIImage imageNamed:@"login_next"] forState:UIControlStateNormal]; - [_loginBtn setImage:[UIImage imageNamed:@"login_next_disable"] forState:UIControlStateDisabled]; + + UIImage *nextImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor],[DJDKMIMOMColor confirmButtonGradientMiddleColor],[DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(303), kGetScaleWidth(48))]; + UIImage *disableImage = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xD1F9FF),UIColorFromRGB(0xDEE4FF),UIColorFromRGB(0xEEDCFF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(kGetScaleWidth(303), kGetScaleWidth(48))]; + + [_loginBtn setImage:nextImage forState:UIControlStateNormal]; + [_loginBtn setImage:disableImage forState:UIControlStateDisabled]; + _loginBtn.layer.cornerRadius = kGetScaleWidth(48)/2; + _loginBtn.layer.masksToBounds = YES; + + + UILabel *titleView = [UILabel labelInitWithText:YMLocalizedString(@"XPLoginPhoneViewController8") font:kFontMedium(16) textColor:[UIColor whiteColor]]; + titleView.textAlignment = NSTextAlignmentCenter; + [_loginBtn addSubview:titleView]; + [titleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.loginBtn); + }]; [_loginBtn addTarget:self action:@selector(loginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; } return _loginBtn; } -- (UIButton *)pwdLoginBtn { - if (!_pwdLoginBtn) { - _pwdLoginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPhoneViewController7")]; - [title addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, title.length)]; - [_pwdLoginBtn setAttributedTitle:title forState:UIControlStateNormal]; - [_pwdLoginBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _pwdLoginBtn.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular]; - [_pwdLoginBtn addTarget:self action:@selector(pwdLoginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + +- (UIImageView *)bgImageView{ + if(!_bgImageView){ + _bgImageView = [[UIImageView alloc]init]; + _bgImageView.image = kImage(@"login_phone_pwd_bg"); + _bgImageView.contentMode = 2; + } + return _bgImageView; +} +- (UIButton *)backBnt{ + if(!_backBnt){ + _backBnt = [UIButton new]; + [_backBnt setImage:kImage(@"common_nav_back") forState:UIControlStateNormal]; + [_backBnt addTarget:self action:@selector(backViewAction) forControlEvents:UIControlEventTouchUpInside]; + [_backBnt setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } - return _pwdLoginBtn; + return _backBnt; +} +- (UIImageView *)chooseTypeView{ + if(!_chooseTypeView){ + _chooseTypeView = [UIImageView new]; + _chooseTypeView.userInteractionEnabled = YES; + [_chooseTypeView setImage:kImage(@"login_choose_phone_bg")]; + + + } + return _chooseTypeView; +} +- (UIButton *)choosePhoneBtn{ + if(!_choosePhoneBtn){ + _choosePhoneBtn = [UIButton new]; + [_choosePhoneBtn setTitle:YMLocalizedString(@"XPLoginPhoneViewController10" ) forState:UIControlStateNormal]; + [_choosePhoneBtn setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [_choosePhoneBtn setTitleColor:UIColorFromRGB(0x1F1B4F) forState:UIControlStateSelected]; + _choosePhoneBtn.titleLabel.font = kFontSemibold(16); + [ _choosePhoneBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_choosePhoneBtn addTarget:self action:@selector(choosePhoneAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _choosePhoneBtn; +} +- (UIButton *)choosePsdBtn{ + if(!_choosePsdBtn){ + _choosePsdBtn = [UIButton new]; + [_choosePsdBtn setTitle:YMLocalizedString(@"XPLoginPhoneViewController9") forState:UIControlStateNormal]; + [_choosePsdBtn setTitleColor:UIColorFromRGB(0x6D6B89) forState:UIControlStateNormal]; + [_choosePsdBtn setTitleColor:UIColorFromRGB(0x1F1B4F) forState:UIControlStateSelected]; + _choosePsdBtn.titleLabel.font = kFontSemibold(16); + [_choosePsdBtn setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + [_choosePsdBtn addTarget:self action:@selector(choosePwdAction) forControlEvents:UIControlEventTouchUpInside]; + _choosePsdBtn.selected = YES; + } + return _choosePsdBtn; } +- (XPLoginInputView *)accountView { + if (!_accountView) { + _accountView = [[XPLoginInputView alloc] init]; + _accountView.areaStackView.hidden = YES; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPwdViewController2")]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0xB3B3C3) range:NSMakeRange(0, placeholder.length)]; + _accountView.inputTextField.attributedPlaceholder = placeholder; + _accountView.inputTextField.keyboardType = UIKeyboardTypeNumberPad; + } + return _accountView; +} + +- (XPLoginInputView *)accountPwdView { + if (!_accountPwdView) { + _accountPwdView = [[XPLoginInputView alloc] init]; + NSMutableAttributedString *placeholder = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginPwdViewController3")]; + [placeholder addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0xB3B3C3) range:NSMakeRange(0, placeholder.length)]; + _accountPwdView.inputTextField.attributedPlaceholder = placeholder; + _accountPwdView.inputTextField.keyboardType = UIKeyboardTypeAlphabet; + _accountPwdView.inputTextField.secureTextEntry = YES; + } + return _accountPwdView; +} +- (UIButton *)forgetBtn { + if (!_forgetBtn) { + _forgetBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_forgetBtn setTitle:YMLocalizedString(@"XPRoomRedPacketPwdView1") forState:UIControlStateNormal]; + [_forgetBtn setTitleColor:UIColorFromRGB(0xB3B3C3) forState:UIControlStateNormal]; + _forgetBtn.titleLabel.font = kFontRegular(12); + [_forgetBtn addTarget:self action:@selector(forgetBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _forgetBtn; +} @end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.m index d8fd085c..a24e568e 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginPwdViewController.m @@ -25,12 +25,13 @@ @property (nonatomic, strong) XPLoginInputView *phoneInputView; /// 密码输入框 @property (nonatomic, strong) XPLoginInputView *pwdInputView; +/// 忘记密码 +@property (nonatomic, strong) UIButton *forgetBtn; /// 登录按钮 @property (nonatomic, strong) UIButton *loginBtn; /// 密码登录 @property (nonatomic, strong) UIButton *phoneLoginBtn; -/// 忘记密码 -@property (nonatomic, strong) UIButton *forgetBtn; + @end @@ -155,7 +156,16 @@ } return _pwdInputView; } - +- (UIButton *)forgetBtn { + if (!_forgetBtn) { + _forgetBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [_forgetBtn setTitle:YMLocalizedString(@"XPRoomRedPacketPwdView1") forState:UIControlStateNormal]; + [_forgetBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _forgetBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + [_forgetBtn addTarget:self action:@selector(forgetBtnClicked) forControlEvents:UIControlEventTouchUpInside]; + } + return _forgetBtn; +} - (UIButton *)loginBtn { if (!_loginBtn) { _loginBtn = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -179,15 +189,6 @@ return _phoneLoginBtn; } -- (UIButton *)forgetBtn { - if (!_forgetBtn) { - _forgetBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [_forgetBtn setTitle:YMLocalizedString(@"XPRoomRedPacketPwdView1") forState:UIControlStateNormal]; - [_forgetBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; - _forgetBtn.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; - [_forgetBtn addTarget:self action:@selector(forgetBtnClicked) forControlEvents:UIControlEventTouchUpInside]; - } - return _forgetBtn; -} + @end diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m index 64205861..fae3ad20 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m @@ -41,8 +41,7 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; @property (nonatomic, strong) UIButton *agreeBtn; /// 协议隐私政策 @property (nonatomic, strong) YYLabel *protocolLabel; -/// 其他登录方式 -@property (nonatomic, strong) UILabel *otherLabel; + /// 勾选隐私政策提示泡泡 @property (nonatomic, strong) UIImageView *authBubbleView; /// 泡泡提示内容 @@ -59,6 +58,11 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; ///谷歌登录配置 @property (nonatomic,strong) GIDConfiguration *configuration; +///上次登錄背景 +@property(nonatomic,strong) UIImageView *nextView; +///上次登錄 +@property(nonatomic,strong) UILabel *nextLabel; + @end @implementation XPLoginViewController @@ -92,7 +96,7 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; [self.view addSubview:self.quickLoginBtn]; [self.view addSubview:self.protocolLabel]; [self.view addSubview:self.agreeBtn]; - [self.view addSubview:self.otherLabel]; + [self.view addSubview:self.authBubbleView]; [self.authBubbleView addSubview:self.authBubbleLabel]; @@ -107,17 +111,17 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.equalTo(self.view); - make.height.mas_equalTo(355); + make.height.mas_equalTo(kGetScaleWidth(355)); }]; [self.logoView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_offset(130); - make.height.mas_equalTo(148); + make.width.mas_offset(kGetScaleWidth(130)); + make.height.mas_equalTo(kGetScaleWidth(148)); make.centerX.equalTo(self.view); - make.top.mas_equalTo(140); + make.top.mas_equalTo(kGetScaleWidth(100)); }]; [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.self.logoView.mas_bottom).offset(kGetScaleWidth(95)); + make.top.mas_equalTo(self.self.logoView.mas_bottom).offset(kGetScaleWidth(60)); make.centerX.mas_equalTo(self.view); }]; @@ -127,23 +131,20 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; make.centerX.equalTo(self.view); make.height.mas_equalTo(kGetScaleWidth(22)); make.width.mas_equalTo(kGetScaleWidth(140)); - make.top.equalTo(self.stackView.mas_bottom).mas_offset(kGetScaleWidth(28)); + make.top.equalTo(self.stackView.mas_bottom).mas_offset(kGetScaleWidth(18)); }]; [self.protocolLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(self.quickLoginBtn.mas_bottom).offset(56); make.centerX.mas_equalTo(self.view).offset(10); make.right.mas_lessThanOrEqualTo(-10); make.height.mas_greaterThanOrEqualTo(22); + make.bottom.mas_equalTo(-kGetScaleWidth(35)); }]; [self.agreeBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.right.mas_equalTo(self.protocolLabel.mas_left).offset(0); make.top.mas_equalTo(self.protocolLabel.mas_top); make.width.height.mas_equalTo(22); }]; - [self.otherLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.view); - make.bottom.mas_equalTo(-169); - }]; + [self.authBubbleView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.agreeBtn).mas_offset((-16)); @@ -172,6 +173,33 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; make.width.mas_equalTo(kGetScaleWidth(295)); make.height.mas_equalTo(kGetScaleWidth(46)); }]; + + id type = [[NSUserDefaults standardUserDefaults]valueForKey:@"kLoginSuccessType"]; + if(type != nil){ + [self.view addSubview:self.nextView]; + [self.nextView addSubview:self.nextLabel]; + + UIButton *typeButton ; + if([type intValue] == 5){ + typeButton = self.appleButton; + }else if([type intValue] == 8){ + typeButton = self.googleButtonView; + }else if([type intValue] == 10){ + typeButton = self.fbButtonView; + }else{ + typeButton = self.lineButtonView; + } + [self.nextView mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-kGetScaleWidth(28)); + make.width.mas_equalTo(kGetScaleWidth(70)); + make.height.mas_equalTo(kGetScaleWidth(24)); + make.centerY.equalTo(typeButton.mas_top); + }]; + [self.nextLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.nextView); + }]; + } + } - (void)setConfigPrivacyAlertView { @@ -194,7 +222,10 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; if(type == ThirdLoginType_Gmail){ [self.presenter thirdLoginByGoogleWithPresentingViewController:self configuration:self.configuration]; return; - } + }else if(type == ThirdLoginType_FB){ + [self.presenter thirdLoginByFBWithPresentingViewController:self]; + return; + } [self.presenter thirdLoginWithType:type]; } else { @@ -264,7 +295,7 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; [_quickLoginBtn setTitleColor:UIColorFromRGB(0x1F1B4F) forState:UIControlStateNormal]; [_quickLoginBtn setImage:[UIImage imageNamed:@"login_phone_white"] forState:UIControlStateNormal]; - [_quickLoginBtn setImageEdgeInsets:UIEdgeInsetsMake(0, kGetScaleWidth(122), 0, 0)]; + [_quickLoginBtn setImageEdgeInsets:UIEdgeInsetsMake(0, kGetScaleWidth(130), 0, 0)]; [_quickLoginBtn addTarget:self action:@selector(quickLoginBtnClicked) forControlEvents:UIControlEventTouchUpInside]; } return _quickLoginBtn; @@ -289,13 +320,13 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; - (YYLabel *)protocolLabel { if (!_protocolLabel) { _protocolLabel = [[YYLabel alloc] init]; - _protocolLabel.font = [UIFont systemFontOfSize:12]; + _protocolLabel.font = kFontRegular(12); _protocolLabel.numberOfLines = 0; NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginViewController6")]; - attString.yy_color = UIColor.whiteColor; + attString.yy_color = UIColorFromRGB(0xB3B3C3); NSString *userString = YMLocalizedString(@"XPLoginViewController7"); - NSMutableAttributedString *userAttString = [[NSMutableAttributedString alloc] initWithString:userString attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor appMainColor]}]; + NSMutableAttributedString *userAttString = [[NSMutableAttributedString alloc] initWithString:userString attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F)}]; @weakify(self) [userAttString yy_setTextHighlightRange:NSMakeRange(0, userAttString.length) color:nil backgroundColor:nil userInfo:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { @strongify(self); @@ -306,9 +337,9 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; } longPressAction:nil]; NSMutableAttributedString *andString = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPLoginViewController8")]; - andString.yy_color = UIColor.whiteColor; + andString.yy_color = UIColorFromRGB(0xB3B3C3); NSString *protocolString = YMLocalizedString(@"XPLoginViewController9"); - NSMutableAttributedString *privateString = [[NSMutableAttributedString alloc] initWithString:protocolString attributes:@{NSForegroundColorAttributeName:[DJDKMIMOMColor appMainColor]}]; + NSMutableAttributedString *privateString = [[NSMutableAttributedString alloc] initWithString:protocolString attributes:@{NSForegroundColorAttributeName:UIColorFromRGB(0x1F1B4F)}]; [privateString yy_setTextHighlightRange:NSMakeRange(0, privateString.length) color:nil backgroundColor:nil userInfo:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { @strongify(self); // 跳转隐私政策 @@ -325,16 +356,7 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; return _protocolLabel; } -- (UILabel *)otherLabel { - if (!_otherLabel) { - _otherLabel = [[UILabel alloc] init]; - _otherLabel.text = YMLocalizedString(@"XPLoginViewController10"); - _otherLabel.textColor = UIColor.whiteColor; - _otherLabel.font = [UIFont systemFontOfSize:12]; - _otherLabel.textAlignment = NSTextAlignmentCenter; - } - return _otherLabel; -} + - (UIImageView *)authBubbleView { if (!_authBubbleView) { @@ -456,4 +478,18 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; } return _logoView; } +- (UIImageView *)nextView{ + if(!_nextView){ + _nextView = [UIImageView new]; + _nextView.image = kImage(@"login_next_login"); + } + return _nextView; +} +- (UILabel *)nextLabel{ + if(!_nextLabel){ + _nextLabel = [UILabel labelInitWithText:YMLocalizedString(@"XPLoginViewController17") font:kFontMedium(12) textColor:[UIColor whiteColor]]; + _nextLabel.textAlignment = NSTextAlignmentCenter; + } + return _nextLabel; +} @end diff --git a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m index 5810a265..708ad618 100644 --- a/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m +++ b/YuMi/Modules/YMMine/View/IncomeRecord/XPIncomeRecordVC.m @@ -89,7 +89,6 @@ -(void)getRecordIncomeSuccess:(XPIncomeRecordModel *)model{ [self hideHUD]; self.recordModel = model; - 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; diff --git a/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m b/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m index f73fbd9f..248a71a7 100644 --- a/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m +++ b/YuMi/Modules/YMMine/View/Setting/XPMineSettingViewController.m @@ -325,7 +325,27 @@ #pragma mark - Event Response - (void)logoutButtonAction:(UIButton *)sender { - [self.presenter logoutCurrentAccount]; + id isSaveBindPwd = [[NSUserDefaults standardUserDefaults]valueForKey:@"kSaveBindPwd"]; + + if(self.userInfo.isBindPasswd == NO && isSaveBindPwd == nil){ + [[NSUserDefaults standardUserDefaults]setValue:@"1" forKey:@"kSaveBindPwd"]; + [[NSUserDefaults standardUserDefaults]synchronize]; + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"XPMineSettingViewController9"); + config.message = YMLocalizedString(@"XPMineSettingViewController10"); + [TTPopup alertWithConfig:config confirmHandler:^{ + XPMineLoginPasswordViewController *vc = [[XPMineLoginPasswordViewController alloc] init]; + vc.userInfo = self.userInfo; + vc.isModifiPwd = NO; + [self.navigationController pushViewController:vc animated:YES]; + } cancelHandler:^{ + [self.presenter logoutCurrentAccount]; + }]; + return; + } + + [self.presenter logoutCurrentAccount]; + } #pragma mark - Getters And Setters diff --git a/YuMi/Modules/YMTabbar/Api/Api+Main.h b/YuMi/Modules/YMTabbar/Api/Api+Main.h index 58dca800..ddf55eae 100644 --- a/YuMi/Modules/YMTabbar/Api/Api+Main.h +++ b/YuMi/Modules/YMTabbar/Api/Api+Main.h @@ -54,6 +54,9 @@ NS_ASSUME_NONNULL_BEGIN ///心跳接口,每 30 秒调用一次,用来更新用户在线状态 登录成功之后调用 + (void)requestClientHeartBrat:(HttpRequestHelperCompletion)completion; +/// /// ///判断是否绑定授权码 +/// @param completion 完成 ++(void)requestAuthorizationCodeInfo:(HttpRequestHelperCompletion)completion; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/Api/Api+Main.m b/YuMi/Modules/YMTabbar/Api/Api+Main.m index b9514f4b..709aa3ae 100644 --- a/YuMi/Modules/YMTabbar/Api/Api+Main.m +++ b/YuMi/Modules/YMTabbar/Api/Api+Main.m @@ -113,5 +113,9 @@ [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; } - +/// /// ///判断是否绑定授权码 +/// @param completion 完成 ++(void)requestAuthorizationCodeInfo:(HttpRequestHelperCompletion)completion{ + [self makeRequest:@"phone/auth/isBoundPhoneAuthCode" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +} @end diff --git a/YuMi/Modules/YMTabbar/Presenter/MainPresenter.h b/YuMi/Modules/YMTabbar/Presenter/MainPresenter.h index 843ad69c..919a71c9 100644 --- a/YuMi/Modules/YMTabbar/Presenter/MainPresenter.h +++ b/YuMi/Modules/YMTabbar/Presenter/MainPresenter.h @@ -43,7 +43,8 @@ NS_ASSUME_NONNULL_BEGIN ///app 启动调用此接口 主要功能:给主播分流 - (void)clientStartApp; - +///判断是否绑定授权码 +-(void)getAuthorizationCodeInfo; @end diff --git a/YuMi/Modules/YMTabbar/Presenter/MainPresenter.m b/YuMi/Modules/YMTabbar/Presenter/MainPresenter.m index 34934cdd..570845f9 100644 --- a/YuMi/Modules/YMTabbar/Presenter/MainPresenter.m +++ b/YuMi/Modules/YMTabbar/Presenter/MainPresenter.m @@ -219,5 +219,11 @@ static NSString * kUpdateVersionNum = @"kUpdateVersionNum"; NSString *dateStr = [formatter stringFromDate:now]; return dateStr; } - +-(void)getAuthorizationCodeInfo{ + [Api requestAuthorizationCodeInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView]getAuthorizationCodeInfoWithPhoneSuccess:[data.data boolValue]]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView]getAuthorizationCodeInfoWithPhonefail]; + } errorToast:NO]]; +} @end diff --git a/YuMi/Modules/YMTabbar/Protocol/MainProtocol.h b/YuMi/Modules/YMTabbar/Protocol/MainProtocol.h index 9b0d9fd2..93e4432a 100644 --- a/YuMi/Modules/YMTabbar/Protocol/MainProtocol.h +++ b/YuMi/Modules/YMTabbar/Protocol/MainProtocol.h @@ -30,7 +30,10 @@ NS_ASSUME_NONNULL_BEGIN ///获取更新版本信息成功 - (void)getVersionUpdate:(XPVersionUpdateModel *)versionModel; - +//////判断是否绑定授权码 +-(void)getAuthorizationCodeInfoWithPhoneSuccess:(BOOL)flag; +//////判断是否绑定授权码 +-(void)getAuthorizationCodeInfoWithPhonefail; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/TabbarViewController.m b/YuMi/Modules/YMTabbar/View/TabbarViewController.m index 31d33689..cbe61db9 100644 --- a/YuMi/Modules/YMTabbar/View/TabbarViewController.m +++ b/YuMi/Modules/YMTabbar/View/TabbarViewController.m @@ -75,6 +75,7 @@ #import "XPMomentListViewController.h" #import "XPHomeSloganViewController.h" #import "XPSimpleMineViewController.h" +#import "XPLoginAuthCodeVC.h" ///Present #import "MainPresenter.h" #import "MainProtocol.h" @@ -91,7 +92,7 @@ NSString * const kNetworkReachabilityKey = @"kNetworkReachabilityKey"; UIKIT_EXTERN NSString * kNewUserRechargeKey; UIKIT_EXTERN NSString *kTabShowAnchorCardKey; -@interface TabbarViewController () +@interface TabbarViewController () { NSTimer * timer; } @@ -244,7 +245,8 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; return; } if (userInfo.nick == nil || userInfo.avatar == nil) { - [self completeUserInfo]; + [self.presenter getAuthorizationCodeInfo]; + return; } [self initTabs:YES]; @@ -262,6 +264,25 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; vc.parentMode = self.parentMode; } } +- (void)getAuthorizationCodeInfoWithPhonefail{ + [self completeUserInfo]; +} + +-(void)getAuthorizationCodeInfoWithPhoneSuccess:(BOOL)flag{ + + if(flag == NO){ + XPLoginAuthCodeVC *vc = [[XPLoginAuthCodeVC alloc]init]; + vc.delegate = self; + vc.modalPresentationStyle = UIModalPresentationFullScreen; + [self presentViewController:vc animated:YES completion:nil]; + return; + } + [self completeUserInfo]; +} +#pragma mark - XPLoginAuthCodeVCDelegate +- (void)bindCodeSuccess{ + [self completeUserInfo]; +} /// -(void)requestGiftList{ [self dealWithDefaultSvga]; diff --git a/YuMi/zh-Hans.lproj/Localizable.strings b/YuMi/zh-Hans.lproj/Localizable.strings index 69cff2c0..0d8ed0bf 100644 --- a/YuMi/zh-Hans.lproj/Localizable.strings +++ b/YuMi/zh-Hans.lproj/Localizable.strings @@ -551,6 +551,9 @@ "XPMineSettingViewController6" = "目前已更新到最新版本"; "XPMineSettingViewController7" = "退出当前账号"; "XPMineSettingViewController8" = "退出账号"; +"XPMineSettingViewController9" = "设置登录密码"; +"XPMineSettingViewController10" = "为了方便您下次登录,请先设置登录密码"; + "XPMineModifPayPwdViewController0" = "修改支付密码"; "XPMineModifPayPwdViewController1" = "修改支付密码成功"; @@ -2095,6 +2098,9 @@ "XPLoginPhoneViewController5" = "请输入手机号"; "XPLoginPhoneViewController6" = "请输入验证码"; "XPLoginPhoneViewController7" = "密码登录"; +"XPLoginPhoneViewController8" = "登录"; +"XPLoginPhoneViewController9" = "账号登录"; +"XPLoginPhoneViewController10" = "短信登录"; "XPLoginInputView0" = "获取验证码"; "XPLoginInputView1" = "重新获取"; @@ -2116,6 +2122,7 @@ "XPLoginViewController14" = "Facebook登录"; "XPLoginViewController15" = "Line登录"; "XPLoginViewController16" = "选择其他方式登录"; +"XPLoginViewController17" = "上次登录"; "XPForgetPwdViewController0" = "请输入正确的手机号"; @@ -2177,9 +2184,11 @@ "LoginFullInfoViewController2" = "性别后期无法进行修改"; "LoginFullInfoViewController3" = "昵称"; "LoginFullInfoViewController4" = "邀请码"; -"LoginFullInfoViewController5" = "(选填)"; -"LoginFullInfoViewController6" = "下一步"; +"LoginFullInfoViewController5" = "请输入邀请码(选填)"; +"LoginFullInfoViewController6" = "完成"; "LoginFullInfoViewController7" = "本软件只提供给18岁或以上用户使用"; +"LoginFullInfoViewController8" = "請選擇您的性別"; +"LoginFullInfoViewController9" = "随机"; "LoginBindPhoneViewController0" = "第三方登录需绑定手机号喔~"; "LoginBindPhoneViewController1" = "手机格式不正确"; @@ -2836,7 +2845,14 @@ "XPMineUserInfoIndividualTagView2"="编辑标签"; ///XPMineUserInfoHeaderTagView "XPMineUserInfoHeaderTagView0"="设置你的个人标签"; -/// +///XPLoginAuthCodeVC +"XPLoginAuthCodeVC0"="授权码"; +"XPLoginAuthCodeVC1"="请输入授权码"; +"XPLoginAuthCodeVC2"="绑定授权码成功"; +"XPLoginAuthCodeVC3"="完成"; +///PIUserSexView.m +"PIUserSexView0" = "男生"; +"PIUserSexView1" = "女生"; ///不能脚本生成的 "App_Common_And" = "和"; "App_Common_Male" = "男"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index 402971c9..adf8de0d 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -559,6 +559,8 @@ "XPMineSettingViewController6" = "目前已更新到最新版本"; "XPMineSettingViewController7" = "退出當前賬號"; "XPMineSettingViewController8" = "退出賬號"; +"XPMineSettingViewController9" = "設置登錄密碼"; +"XPMineSettingViewController10" = "為了方便您下次登錄,請先設置登錄密碼"; "XPMineModifPayPwdViewController0" = "修改支付密碼"; "XPMineModifPayPwdViewController1" = "修改支付密碼成功"; @@ -2103,6 +2105,9 @@ "XPLoginPhoneViewController5" = "請輸入手機號"; "XPLoginPhoneViewController6" = "請輸入驗證碼"; "XPLoginPhoneViewController7" = "密碼登錄"; +"XPLoginPhoneViewController8" = "登錄"; +"XPLoginPhoneViewController9" = "賬號登錄"; +"XPLoginPhoneViewController10" = "短信登錄"; "XPLoginInputView0" = "獲取驗證碼"; "XPLoginInputView1" = "重新獲取"; @@ -2124,6 +2129,7 @@ "XPLoginViewController14" = "Facebook登錄"; "XPLoginViewController15" = "Line登錄"; "XPLoginViewController16" = "選擇其他方式登錄"; +"XPLoginViewController17" = "上次登錄"; "XPForgetPwdViewController0" = "請輸入正確的手機號"; "XPForgetPwdViewController1" = "驗證碼發送成功"; @@ -2184,9 +2190,11 @@ "LoginFullInfoViewController2" = "性別後期無法進行修改"; "LoginFullInfoViewController3" = "昵稱"; "LoginFullInfoViewController4" = "邀請碼"; -"LoginFullInfoViewController5" = "(選填)"; -"LoginFullInfoViewController6" = "下一步"; +"LoginFullInfoViewController5" = "請輸入邀請碼(選填)"; +"LoginFullInfoViewController6" = "完成"; "LoginFullInfoViewController7" = "本軟件只提供給18歲或以上用戶使用"; +"LoginFullInfoViewController8" = "請選擇您的性別"; +"LoginFullInfoViewController9" = "隨機"; "LoginBindPhoneViewController0" = "第三方登錄需綁定手機號喔~"; "LoginBindPhoneViewController1" = "手機格式不正確"; @@ -2836,6 +2844,15 @@ "XPMineUserInfoIndividualTagView2"="編輯標簽"; ///XPMineUserInfoHeaderTagView "XPMineUserInfoHeaderTagView0"="設置你的個人標簽"; +///XPLoginAuthCodeVC +"XPLoginAuthCodeVC0"="授權碼"; +"XPLoginAuthCodeVC1"="請輸入授權碼"; +"XPLoginAuthCodeVC2"="綁定授權碼成功"; +"XPLoginAuthCodeVC3"="完成"; + +///PIUserSexView.m +"PIUserSexView0" = "男生"; +"PIUserSexView1" = "女生"; ///不能腳本生成的 "App_Common_And" = "和"; "App_Common_Male" = "男";