From 627748d2308dc5b96fc0e6494f89f2b5f49ddbd8 Mon Sep 17 00:00:00 2001 From: eggmanQQQ <3671373519@qq.com> Date: Fri, 21 Jun 2024 01:37:38 +0800 Subject: [PATCH] #916 save code --- YuMi.xcodeproj/project.pbxproj | 14 + .../home_nav_search@2x.png | Bin 530 -> 869 bytes .../home_nav_search@3x.png | Bin 847 -> 1966 bytes .../Contents.json | 22 + .../home_rank_Headdress_first@2x.png | Bin 0 -> 14954 bytes .../home_rank_Headdress_first@3x.png | Bin 0 -> 30301 bytes .../Contents.json | 22 + .../home_rank_Headdress_second@2x.png | Bin 0 -> 7618 bytes .../home_rank_Headdress_second@3x.png | Bin 0 -> 15650 bytes .../Contents.json | 22 + .../home_rank_Headdress_third@2x.png | Bin 0 -> 8042 bytes .../home_rank_Headdress_third@3x.png | Bin 0 -> 16438 bytes .../home_rank_Heads_bg.imageset/Contents.json | 22 + .../home_rank_Heads_bg@2x.png | Bin 0 -> 33175 bytes .../home_rank_Heads_bg@3x.png | Bin 0 -> 65792 bytes YuMi/CustomUI/UIImageView/UIImageConstant.h | 2 +- YuMi/CustomUI/UIImageView/UIImageConstant.m | 2 +- .../MSSessionPublicChatHalIRightmageCell.m | 2 +- .../Cell/MSSessionPublicChatHalImageCell.m | 2 +- .../Cell/SessionUserInfoTableViewCell.m | 2 +- .../Session/Content/MessageContentImage.m | 2 +- .../View/Recharge/XPIAPRechargeHeadCell.m | 2 +- .../MineInfo/XPMineUserInfoHeaderView.m | 4 +- .../View/Cell/XPMonentsTableViewCell.m | 2 +- YuMi/Modules/YMNewHome/Api/Api+Home.h | 22 +- YuMi/Modules/YMNewHome/Api/Api+Home.m | 31 +- .../YMNewHome/Model/HomeMineRoomModel.h | 28 ++ .../YMNewHome/Model/HomeMineRoomModel.m | 12 + .../YMNewHome/Model/HomeRankAvatarModel.h | 21 + .../YMNewHome/Model/HomeRankAvatarModel.m | 12 + .../Presenter/XPHomeContainerPresenter.h | 4 + .../Presenter/XPHomeContainerPresenter.m | 133 ++++-- .../YMNewHome/Presenter/XPHomeMinePresenter.h | 3 +- .../YMNewHome/Presenter/XPHomeMinePresenter.m | 37 +- .../YMNewHome/Presenter/XPHomePresenter.h | 8 +- .../YMNewHome/Presenter/XPHomePresenter.m | 54 ++- .../Protocol/XPHomeContainerProtocol.h | 4 + .../YMNewHome/Protocol/XPHomeMineProtocol.h | 19 + .../YMNewHome/Protocol/XPHomeProtocol.h | 3 + .../Protocol/XPNewHomeRecommendProtocol.h | 2 + .../View/Cell/XPHomeBannerTableViewCell.m | 2 +- .../View/CustomView/XPNewHomeHeadView.h | 1 + .../View/CustomView/XPNewHomeHeadView.m | 26 +- .../View/CustomView/XPNewHomeItemCell.h | 7 +- .../View/CustomView/XPNewHomeItemCell.m | 229 +++++++++- .../YMNewHome/View/XPHomeMineViewController.m | 420 ++++++++++++++++-- .../View/XPHomePagingViewController.m | 94 ++-- .../View/XPHomePartyViewController.m | 86 ++-- .../YMNewHome/View/XPNewHomeViewController.m | 99 +++-- .../PIRoomActivityWebCell.m | 2 +- .../XPRoomFunctionContainerView.m | 34 +- .../MsRoomMessagChatHallView.m | 2 +- .../XPRoomMessageContainerView.m | 2 +- .../View/PIRoomPhotoAlbumItemVC.m | 2 +- .../PIRoomPhotoAlbumChoosePhotoView.m | 2 +- .../YMTabbar/View/TabbarViewController.m | 2 +- 56 files changed, 1281 insertions(+), 244 deletions(-) create mode 100644 YuMi/Assets.xcassets/main/home_rank_Headdress_first.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/main/home_rank_Headdress_first.imageset/home_rank_Headdress_first@2x.png create mode 100644 YuMi/Assets.xcassets/main/home_rank_Headdress_first.imageset/home_rank_Headdress_first@3x.png create mode 100644 YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/home_rank_Headdress_second@2x.png create mode 100644 YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/home_rank_Headdress_second@3x.png create mode 100644 YuMi/Assets.xcassets/main/home_rank_Headdress_third.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/main/home_rank_Headdress_third.imageset/home_rank_Headdress_third@2x.png create mode 100644 YuMi/Assets.xcassets/main/home_rank_Headdress_third.imageset/home_rank_Headdress_third@3x.png create mode 100644 YuMi/Assets.xcassets/main/home_rank_Heads_bg.imageset/Contents.json create mode 100644 YuMi/Assets.xcassets/main/home_rank_Heads_bg.imageset/home_rank_Heads_bg@2x.png create mode 100644 YuMi/Assets.xcassets/main/home_rank_Heads_bg.imageset/home_rank_Heads_bg@3x.png create mode 100644 YuMi/Modules/YMNewHome/Model/HomeMineRoomModel.h create mode 100644 YuMi/Modules/YMNewHome/Model/HomeMineRoomModel.m create mode 100644 YuMi/Modules/YMNewHome/Model/HomeRankAvatarModel.h create mode 100644 YuMi/Modules/YMNewHome/Model/HomeRankAvatarModel.m create mode 100644 YuMi/Modules/YMNewHome/Protocol/XPHomeMineProtocol.h diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index 39575bf6..1bc4ac2b 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -525,6 +525,8 @@ 545888362C1C306B00897585 /* XPRoomPKPaneAvatarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 545888352C1C306B00897585 /* XPRoomPKPaneAvatarView.m */; }; 54C3895C2C215F5100FD47B1 /* XPHomeMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */; }; 54C3895F2C2189DD00FD47B1 /* XPHomeMinePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C3895E2C2189DD00FD47B1 /* XPHomeMinePresenter.m */; }; + 54C389622C23BD1600FD47B1 /* HomeRankAvatarModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C389612C23BD1600FD47B1 /* HomeRankAvatarModel.m */; }; + 54C389672C24464600FD47B1 /* HomeMineRoomModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 54C389662C24464600FD47B1 /* HomeMineRoomModel.m */; }; 73FFADDC93E195344047A2EC /* Pods_YuMi.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CACF623970097D653132D69A /* Pods_YuMi.framework */; }; 9B0086C627BA392B0032BD2B /* AnchorStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C527BA392B0032BD2B /* AnchorStageView.m */; }; 9B0086CA27BA4F570032BD2B /* AnchorMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B0086C927BA4F570032BD2B /* AnchorMicroView.m */; }; @@ -2572,6 +2574,11 @@ 54C3895B2C215F5100FD47B1 /* XPHomeMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeMineViewController.m; sourceTree = ""; }; 54C3895D2C2189DD00FD47B1 /* XPHomeMinePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMinePresenter.h; sourceTree = ""; }; 54C3895E2C2189DD00FD47B1 /* XPHomeMinePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeMinePresenter.m; sourceTree = ""; }; + 54C389602C23BD1600FD47B1 /* HomeRankAvatarModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeRankAvatarModel.h; sourceTree = ""; }; + 54C389612C23BD1600FD47B1 /* HomeRankAvatarModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeRankAvatarModel.m; sourceTree = ""; }; + 54C389642C24448900FD47B1 /* XPHomeMineProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeMineProtocol.h; sourceTree = ""; }; + 54C389652C24464600FD47B1 /* HomeMineRoomModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeMineRoomModel.h; sourceTree = ""; }; + 54C389662C24464600FD47B1 /* HomeMineRoomModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeMineRoomModel.m; sourceTree = ""; }; 7DB00EC07F1D0ADFF900B38D /* Pods-YuMi.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-YuMi.debug.xcconfig"; path = "Target Support Files/Pods-YuMi/Pods-YuMi.debug.xcconfig"; sourceTree = ""; }; 9B0086C427BA392B0032BD2B /* AnchorStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AnchorStageView.h; sourceTree = ""; }; 9B0086C527BA392B0032BD2B /* AnchorStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AnchorStageView.m; sourceTree = ""; }; @@ -9417,6 +9424,7 @@ E87DF4E82A42CB24009C1185 /* XPHomeProtocol.h */, E87E62692A3F5756002F68C9 /* XPHomeContainerProtocol.h */, E87E627C2A3F5A63002F68C9 /* XPNewHomeRecommendProtocol.h */, + 54C389642C24448900FD47B1 /* XPHomeMineProtocol.h */, ); path = Protocol; sourceTree = ""; @@ -9490,10 +9498,14 @@ E87DF4CB2A42C960009C1185 /* HomeBannerInfoModel.m */, E87DF4BD2A42C8C1009C1185 /* HomeTagModel.h */, E87DF4BE2A42C8C1009C1185 /* HomeTagModel.m */, + 54C389602C23BD1600FD47B1 /* HomeRankAvatarModel.h */, + 54C389612C23BD1600FD47B1 /* HomeRankAvatarModel.m */, 23FF42712AA6CC480055733C /* PIHomeItemModel.h */, 23FF42722AA6CC480055733C /* PIHomeItemModel.m */, 23B8D8D92B85FDDD00CA472F /* PIHomeCategoryTitleModel.h */, 23B8D8DA2B85FDDD00CA472F /* PIHomeCategoryTitleModel.m */, + 54C389652C24464600FD47B1 /* HomeMineRoomModel.h */, + 54C389662C24464600FD47B1 /* HomeMineRoomModel.m */, ); path = Model; sourceTree = ""; @@ -12492,6 +12504,7 @@ E8395334276A03C300CF2F24 /* XPMineDressUpPresenter.m in Sources */, 2357148F2BEDC94D004C81D6 /* MSSessionPublicChatHalImageCell.m in Sources */, E85E7B212A4EB0D300B6D00A /* XPNewMineGuildIncomeRecordViewController.m in Sources */, + 54C389622C23BD1600FD47B1 /* HomeRankAvatarModel.m in Sources */, 23A439742AA1CF7C002E6039 /* XPNewHomeHeadView.m in Sources */, 189DD75926E6003C00AB55B1 /* Api.m in Sources */, 2331C1652A5EB71000E1D940 /* NobleRechargeModel.m in Sources */, @@ -12578,6 +12591,7 @@ E896EFB22771C93B00AD2CC1 /* XPMineFriendNumberView.m in Sources */, 14EB640D29A5C16000A4A00B /* XPMomentsSimpleDetailNav.m in Sources */, E80EC80E28ACD84000D133C5 /* QKeyboardBaseManager.m in Sources */, + 54C389672C24464600FD47B1 /* HomeMineRoomModel.m in Sources */, 23E9EA792A8385CC00B792F2 /* XPTreasureFairyGiftView.m in Sources */, 149839C7299E0B9F00F82CBF /* XPMomentListCollectionViewCell.m in Sources */, 236BA4982BB6AFED00C7C73A /* PINoblePrivilegeEmptyCell.m in Sources */, diff --git a/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/home_nav_search@2x.png b/YuMi/Assets.xcassets/low/navigation/home_nav_search.imageset/home_nav_search@2x.png index 063db99e7a656ac6d378dc0405d26e89b6300749..b88593daa34bd3beb64b6338598c30f51dec8eea 100644 GIT binary patch literal 869 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGjKx9jP7LeL$-D%zEdqQ(T!DiB zM*-;}z~uS(H!$qdOM?7@85o(ES=qUGc=`ARMMT9Vq-5k3RaDhAG_`c~jZMw0-90?L zd;^2RB4bn2GPAPt@(WAL8{67DI=g4hU9@<~@)fJrtlzX{_nrfX4j(;p{^F&p*Kgc^ z_TuI1cOO1}`uz3V_a8rh{r>a!->s}~e}U1K;pyTSA|Y9Okkk260>kl#^ZiaNRx;*w z4$hX6UACemFw(1B%cB3-D_M)}|G)od^9?w6_49>P4ddCf{U&FmJbgQ{yeu!PIy&+f zufBZCu1C|Cy)fJ+txqt5ZGp1w5NsV}>}|MH~UnJWU9 zjMTl*9l00Z?pypzNcVK(DY3oJY(j%$BrGp{WcfSK^FxdN1km)5`z;OGNL? RDFsF|gQu&X%Q~loCIF$vG#CH? literal 530 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyr2#%6u0VRn_Tvz=eH)aqWBUmp z0&%w;-?{DR)~#^yUbwrxASb?cGs+m8bg*btz`<2!a72g-sO zCxGI+wx8SvHhDYH*d51!;`S=fHv=tJD+%%oX88E~$G7VnUd}7<zL&jiTnvwrs&m_EDXz+rEbNZDsM8fBB4R z7vrg#y?Km}AMIRi(k%S`55r3LN>%fQ>X)WZJS%FNx8$q3ltv(q!h(YZZu=F_G& zf1j7KoF~IR|K|@-bl%suuW5C|!KQD)p#>TpN{2GPuABYY?9AVw>ny=JUtA8^?e1~h zyF9$d?AzZd)7Ez@xLD_x@@SM-?AiZ+?;pKe7DcQLy{|+(yPW%sa#hr3Esl_t`@VT^ t$@29%GKSVG#NMA+YQ5m7O52}vnw8Cf}b z1w|!g6;(BLO)YI5T|EOsBU5t=ODk(zI|oN6XBRhj4^J;2-+-XtkkGL3h{&kunAo`Z z#N?FJ^o-1`?3~=Z!s3$Bvhs?`s_L4$`i91)=9aehj?S*`p5DIx2@@wznL2&O%vrPN z%$>Jj@$wa`RGGAU z*RJ2VdF$@I`wt#Idi><+v*#~fzIy%U?Ys9MK7RWA{v*q~YO}0*4lp@G6aZSO*F77K1+`4*7YAmkX6DKH4 z(^L_4W8F0E?vjWK$AesqiY5*Y+vmQW^Z9o&ldJ58w;yXaPKj8^<9TDoHceeiHH!n` zEbEsP&fM*t{Yq+fpVaEE&zH9*RXh`4zy43rgLQLDEh4Vj74KZCqaDTe{fMHzd9>Se zj|V$hZ7!ZEI6qOG$+h6H`Qlq9o-XHJ*UzxFwmSc{kJH8ETHrjLqg;$Pb+=m-^?ciQ z_1(>7*IyQYm)ieUTD(I(&x8Mf(W$w2i&Y}(E%#LBww&@;4A%(Fp7iB?v<#DP%|_o& z)jz!U8;*RfpCf$uf#Au>KYf{9jNjh;SD;wG@w6MCcV$mUqqf_gcW+nA_|88y;eleI z+i4xk>Tj*dOMgt_w)q>rKd!~qr{e1VCtE~X56@jOiJOUc%8HF1^O7I6Xs0F?=x<7k zd2r6|^n-mno@s8n=6;Y_?dfMvDNBj735_xLy|2Z`3mu#s8vXmkx5r|J&pIDz1G|%THGu_|N+}b*j#6$qKO@*AH3u**8|6ify*3uF~D}p>o;Plcgyq8Cs^? z5p2s=e&D-e;?sJ44weZ4$%KZ>diDy?5;SD!-S%XfqUY$XeX| z`jYm8-X#ScdFIENZd`ftz^Y{52e(bHwa(T_u`9gQI9iuXByzf{6d+8G+pSTX=Q87tgb2Nd2eU_}-&Q ze9{?Xzx3!;A`LowOQ-$X=J9amt{;mM%-a&?c|@BzJ(gE7`jFxLdW}Jd%26iyyOl-X zo_Rm?ba-gGY2G=3$Maq&FE05WA;kP$B{KcZm+N-C? zrI)3l%H7<%IIWpW@6WvK9fyR^e%mI&zbA0V=c|jlex0|gy2svNbv{LTwx&O?_@gD4 zHXqjc=y%QRtN;J4v(2s=j2X23~3+5@ei_} z@6L5hNSb&mA?;+?{GO*Z&4-kdA17^D&AhZiC8K)!SHHV#Hp>>sJZ`t*l@k`;R2RG9 a{QnzjE%mot+X8_F8iS{+pUXO@geCyNAO9-= literal 847 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sivoN?T!HkC?Z;v0#E$L9wr)DK zV>^%mM8|h-KfZ0t@!dO)?*OCIr!PPRx9cumJ+ULiI zOCOn>U?7*0RR6X02m=F?wx^3@h{y4xp|{Is8wj`v&FF4ykj**%Hvrd7TlNu^B z-n#3X*Zz6GQ^9WMe64`Bm*0KymoGU{y5pvO&Y`VMj7Rq!zHXzi(ADVcqhA(_JzaQT zEwMQ+pKAADJ!atA8sAF#339;oNDKBCUG)0(|Utr$3 zQ-!1V?e#Q2(=Y!fC4?{h5Y^P~-IU8}nXl8St-~tS{fy`FqgBq^^;(s#H*>#snYE;F z^&F|M+;tmkRhLQ4_`+?*!uLDv4Rhf7Tt{3aV`!<&0b*L5#`n_k2jU~~Ug zlZ9dg&)Oe%qncyR=5#)nYOPMsXPe9^uv#T|PtU7Zi;(wRyN{g>tNXX=iPD|7iPyaBuPX;R2UiL!3ThxRiUuq_k4Bw>}=mnPaq`p-XsuEP^xqbDqTLPC1q)ZNYYK7GD+&JSL^e?(AF5CYG`mrdt_yM9$%`=_4LikmmB zd-2K(`H~TQiKx!UPjSSchh1ghZ+wktB0*WVqrdxD5Gns}Yy)9xQcqT# zTfXzTFYzT}@FkNNHKN8Tgb9jS^dw=vWHh!y?X!MY)jxm2u6#^EcJj?auRRYD!E*yG z-PAfE=zHNjKBoS+f4^JDE7wQa3TbR*oJ~)SiB#0hGNSPXeG6{||`B?}U-c zMd&(zB?Q>9D1EK1VKnt>uJhGhV>Msv6YX zw|DI%zgXH;2^~wGgcXc)Sk0wECmFQpXkN>x=s;Irbbxs2Is47xd(E$Oy}=Xh*hwB$$4OV^Q0=ZTdk z(R2+d!7VwMkx)K0c*pr{g*3K8s*r6kOwCukM=3PTzzj!`0Z6Gp0|6-BAp|OrIQ?Dh zd&;jk^1`d|e3w`RG=Y)|Q23rlBpPl_ZGS=&TOp0D zkcyRcNIleq4EP&TqLc&_e@6(U5S!=%Dyp0(8wp0!k=Q{DlB?(m692>yl;2H>FlJO~}7BuXjXPw)<Mf~v3WY);GzqwX#+DTCGAI>`v^2UnMOO$-AO!zMAOHah zl#=|F5E^cwgc%QeV~#oYSf%C+Wh-Q`6;bL+4fl}aWi~qwD;k*VM4#vR<>)q`Kq!=w z5P%XI2o2CcXdna#9WT?v$engk7vJ?eF=$wX{6HR|nFyit7Xp;j&~+V6H;^(w2!YT9 zzUQH7p;eSTH^}y16ZB14<>EgQETnR}1U5xi9GJIa;%<*Y(8si!3{` zAdr$E@CX7I=@xPFy*RlJq?~|zT+gdO!3C-+DFcBYkMKW zR>0tMu50>rwRT1IPo&Rqqb&KNUK@K_h=YCJ(Y~?ojoP8%!vd*;ra`D2O;2D~)?p@w zVuoTU5k-nPnr@-#5*d<6-yxsP5UGz5uFatW4^T+o2LgOo5||w*yBR-Q!gF#sflGj3 z$gVq2gC`K7achCgoxW*1>6!HDsY2n--sSf^T(Q&H)A$?{e2#T5xclIcDb9|K-frcb z`yan!+>h_vn;?y(*$UM6e#5*WeMdfe9y;si}=MNf$JgzAE)Fa zodPoOkgkhi#;M!&pu1v&_WOwtNVf3Sqra%xedke^yRM%w;`Z-C+n%<8&l$nz%6=zXvy;rkHo}r9es#-*J$+EMC4JGhT+@ zvFxY2j9GXu;~QNekZhrM{_SU%mnRONH*@}7`<{90R6a+OcWX&+l zNENPAq;K;EdN;Qsg8dOPa5QV8b~*<#19l^D1{LUqvH^*O;;n`I~2vq69e9pUVQ(ynk@asaZ9r*_xstMd`6U-e>8+{S@6WeuZt_k zW9)m(39G((>WSMLWkWVY=yyWj^Dh2_);;;t?T2i?>x6kT-oEdk^X__*EhvS?#>?Vf z`Kh;g#nSg&w}4+9z$*<9O~i;MlXSJTsts?yC0bW3rhoG$3?T@|6IfxhH5`g8Q$n^D za;25Auvl$X59%zmcLu2_=vUf3UYozZvBXhapZoX5ZP$&>hRZ~B9 zH-_xK3$=ry6xtWlwR!;(3o8=Av~_|Y)T3Lm%j$#ZG zAF{)|j*b1lsT+0pOMJ>!K6$~=it_548ykC`-1n>rkFy2!W9Tt=hDd{)7^y?Nn)6ifH+9)rs2cZ-WUmK z1MIP|Bm|Oo-2J_Abw{6b;tkym%ckyf)_o81DSPvUn+EN7)KQnoe8Z1AR=#bx=?*qG zbZ(e*&s)0)-f`*pZFfEM(r>&ay|nG*T&lJiP4$@F(L%|mWG;8TReAJ$J_Q3!FQ(d- zEqZ9X-FBR;4?g}bwxAa5VFsfg{)QeO{bwNQq#JSaCE^tcq|?dbDbKR(x1}lOVliybaqM;YSD~#5-*8ZQaCPA}a%6vfFC1K!cU>XBjHO`9HwRn^{7zvo%c@hRx*domd} zl0QPI^9vn~b?s{wQp}{O8!?zkk1f6Fhqu0VvEV(=Tyx@#abF#NP*+DE((_1F*HSrp z2h2nzG7uA-qJ3?w=4+jNg3@y*+?X#GMExOGT*P~nLa=ZTBiR1W$Lry-kD~$*paKt} zYh+sH^2+U3skRl1MP+S0mDQE=I(wbppL+Ma=lK-fbJl?)YE%9NzUN=i)!KrH)v(`5 zr?BmgRW!cwByP#Uij|>@5>AFmLq@e+;@fs-dGpY`IC)~gJKE-5H!kFe-xTxda|a#% z+Xg;C#r|nOux$6|c*QZM}D zyo?~wNN;YY*wu=roS#Kv`Q<7%{X(Ub#wTF?q+guYykT=${UKLe#1=Nc^pkO2oPLiU z9{U(5kRG5T^bqT3+{whBf1iQY&0^G!yA&cqUiyvS&D!_WyXQU6r|j%|XKgzA`Zq6( z7{R{vLk3Te#&l*sa2pF=Uc`_C&sOoO8r(t-sYNlu@|d3N9xs`xGtMsTy=%3aKHlIR z_51wS>`m)d-&^$b%NN}JLz7Q{D$W}xvy-M2DSpxYq=1%AOrmi#Iy(-ZvMP*Kb%j@93N69}?HpZz}5RSoYep%)I|Gk=pj_Bx`E%ih1-<3NPQj zP2++$Z|K=vH`m?emMfJS*qwLmaps>M$!EKpk~LL7=ig9DPutCzM_Q--abGxdtzwR7hwnV+JRI-+LBZ(i>eJB=0pbJQ+; zOse;#M39|!wP^(lykh1wH=RW)12h9P0VtGGNTo<7Lv*y}3#*qkKgN4Bw(#Opi>}$Q zs;8@}CPpA73c>$U2o##3<9mX1O9$DOjYn&`w@3wZZ&cY?ReVINA3o)%sy$EMXZRsM zI>*oF8afyJ@n_BRpB&cPypG+!eJ$bg!5|&bY~Ho}`Cqf($-5Xdc1LX8{=?UQ^Xd-; zC_V=czwWJPBEtM?{fH6y-sa`Ze*AgLMjuWn5ydTJF(Z{!4>Bn9H`2Loq0zJQnQs)j zR!^?k`Kwcge)VVD8H2`Lz{jBcc|Ra#EzWne{IYlDxn~;x!di zZZo1y3ng#B3~m+TV4n}*I2}7_f%9F>O#V=4k@8H_TrzF*@LkxvVm^a+J&cj#&Iaj& z&_HNxn0Y&|-+m>j;bSp{ea*4gz4}W&hn~7%+|EYKp4s2Nxop^O2eQwx-=JsZWPDFz znc%oO8FwfZ_0@!9NsLex(fXay%rLsbsUNy$P4O%9(aN?@>yb&cNyu0yq7b zW!22p?Ln89`a8Fz2BgiPw)JUS566 zvDdx&OFpMgyk+(>u#c=BJ~F@Q?ddekTSe8F15iPpKtu>f6qeRWe@8z`Gf=8Pw&iV# z-Rp4j&e1}PPEtzE3ksbVmoghh^B$FbW~>TkJXq>$o4RV!O9!o*GLvjiKcPev!#0r$ z6d>4wA5b~6hSe*(HvH-OSI(OOCAJ{=0OQLjyX>knCw=3r1IOh%3z*RgG}8hUe#ynj z=JAUKa(!t^0|k1To9WruOt>P#4qw}c`kfD)q(XZw*7VSk2xCv)QA#(HZ(ojE=tO8b zpi%7aq-FUWc0TUcB!}#Vbo$Zk6n?&m$-h5MWqP{Ai0yZqJ??@>4rD8^{GoHdzjo#7 zhcZ2V9DL?aC{N|-*|;1lS_VOhj*c*ix)G%6hGLo#qymLNGb7mX8bYa22tiiDLo&A{ zUFuzM;p(X~BAb_PB34mJX;0K)M)K2u%ifo=eA?MWlx8$l$$BM)^5}5k?4| z1&>}q)-1*Fc5?g^gpIxx*{O=rCl`m%Z?rv;h#GZ$s`JFh05_ZG} z0tWgZ9I?<%9fgjj=^%aFVjpg{4WXH~X~*~0tlDvon=)J1wFg0|UyGJUv14H@JB%5! zF>M>&vd~Qfq3a-htg<+u`1N-u{Oaa6*WAMg(D@Jzg;IyNv~}bDN9}h+tiCR!@_EoS zq#qEt9@6)4izV{C-PmPS?0EdeYv%Lb*i(=}{Qy zC)3lx=!3q4ou~spi!kE!uAR)n=N=$YQHQDA@9uy86HD2OT)g*oujV!XxMHrqT4FO| z_ua|$HlvIrk%*v_FW?6{b~Fr1A!UF7G|fP|SqeStFhWU;P!c1%jKtaY~JJV%Sj~`ZLzm&#G?Sk^tEP3_@N`-)m z>gv1p`|*R1vlaW%u{*8}w8%N>j%HE4?Jh)P7G5b&I1wi(mFQ_7z_cw)Qzx3VsHjg6 zvOL-w7Sb?l8jUM9kjqG{XcSWjbOBZ@f?PNF=>I)06KK+^>PRR!A z`6qNff_9L>;!O*jOjp^SM<2JR?q?|WXYgDXzvSY(E>1d2AYEZbqS&Db=pnjWJ84_9 zj?NA3c)2`@x=NCRs}RKu(PS0TR0=1TB~&?rzV&lynEfL0ia|0JHopJImzMRh6}xxx ziq3Psx#zC=fq}7x9aDqGj25L#2ST^dO_O4_NbT?{YPYRLQyy)r8(2AW9!)DZ;Fba+ z@i?J~1=7b&=P<(|tgww~hcIj#+crs#-HCN`-`?=EBQHK}N+wv!M_}+iN=-L}IN0ZX zUWK$iVbT>9gNIfef6=KY#j-ha{b^7jc!zFK7)TQ}bp$#}dBhSCRA7_t>7jE|Gppt- zAT_v(^6F}a?mQBy3958w5)0(pUDtP#E2ym2qBPxheG0{3ur>eG!2wepg>4T`L5g2 zvU=U-t4{m3Q|Kn8?F`98i|!uLwp5sO$=9Hj*;d3_eE-daQ`9wP7y*wHea zY=*9lD~Og?gU}x03u4U1+G+9f%JptOPk%=b;j$`(rV&jh>F?>``P&|1>5MmVy#ld{ zI9Axg^ITlV12nvnLot&_(=`;J6v#kQJFJHF^Vc=~^5kEi^~l=R*La`l_g@*xHNJ3> z+m+d#_tAKtAwy0sPX66(r9F>5WKIw)xl?85j%5q;q4$CRy6cjsZh!vqy5ZG?A|YfT z0flK-4|M z7lgR-N@-}?i)PrOtFaZ`Do58f&`s=U9L*5Kk_mLn#P@uB*G2k1;G<+ft|yDoG<01< zNreFFhgY$=sk{B!)Bf<|2Ul#G$`(}Hf{5=fIb-~3-&x+isqv%-&ic)I-pAkr9CgJ# zx4xDveD9D`k2u#0Do<0z8IR(t2_k;*3f}Pwv}b2rzvOZBUn4#Dn#AebD`C};*m4b-D&U0qxSe#F_WWID52{*`GF#4 z$Uw6MUe19)BBdmk%OQQAvf5hEG&Ehqa}@n;o2jTSr@uEdnJ<`7P59M>5}lcWTur(s zL$W+cF`Xk)R)!sk)79ETBoV=s5@F~d6uzsI?kZqdItYQ3lKP?5w6qK~|Nhd4&VH^d zJ(YJT)ti8Zb5vpAJSW>Xw6kFmRWXML|1f95ZSy-{=L2Ybh(|Z|&Y${1;{?kN)4O3M zU8@#qrJkYh zz{e>Ri6#?-lTnZ^!nE)`g_Fx5G@YPW*uWRewnyBW5yEIjdKA-XbTfuf59zMf2dli6_+Vz!BVfc z^}2z^wL{yMzJ;y1EM1aYw`gAL4SWcVe_+b&N4D|>WF-=fLKApSfY3w4E6efHc?!KfC?vk?;`=@lh3hyB^cN5s zSe8XH8DZx1#WQcZYU214PCs_D3TFK(HfqFjnceV*Al*B>(ASNV&k{){(aa=|+%fy| z$2a%1@gX$+fr%}dz84>P>*r2U1@Tk@q3Iw5$^);jpCHqJ+^BIo&$)T_A08Vy?!e`* z&sg@0&J7zoH6;EswZUGTZ(A(0*(q|`=@9M$`+4!!D=Xz*bK!3W3>w{_NWV^f7qIt`oZW_?8{QV2p zpYok+zPAR?y~^uquU1}wLV%{BTL#s2DPEhj;?H+1+V~9rfWbd;^BZfY?C`+s+rNLw zvFGFQzcc~Dz)5HDJG)4fC62x5mLDJ6wW({`>epw^>Rh;B|7=Hpy`!7LG~+~LI*w8V zL4Xmmz%N@_#>)9? zH%)$g=6~}~7<>dTJTdp$y${~$;GGZIV<#u?^H-W>B3zI5b*&WNUQWEG^3eT`J+xRn zbpPzSH?)N0cI@e@dXu5Rr>knqof{mQNnS!HnoCjg;?QV31M2!+r? zHm%E7vwqgRaD3R1@J{3RVYfr~Q@b(Ln@d};zfsfDxU?MR<*O5{o0}mq{EAa(o zCX+>x&LRVe8IGY@21-fkdU=FI{$*Ufj+_GlHBYXq~AJJS>&;;RR zlE4XQUAUaJGv-pa!)SIp>>&0(;y|9cVFK-qvp{HohR}81r5PG#IEWH94jxwuq@nC9t8*i(sc-Y zmtotFp{Hel8IN2A`8-ua>qre5gc%8eQlJ!nLn-ud2(bCnFYdeMxq(yYO$Kt3U;Dg9OB7~rF4#wUIgE#V%Q+ekc|uiP>R2&5Cn+W zFy>BtdB(g)X5GQZpz$$X{o>NQUcYbRBoW>gE2N=<01$kTAdm=6qjFFch84z9^ep~%Nz@GrRSircQRlkxJeocOH+EPn<0z8oJ$ zDTNFarV${G1g&j3+TMB@O|u~!rhNMYu@hxTFI&;o+BXtd&likx8Ee`hOv@%a&=01K zj-*g<$rJ^tGKEqKB^4h=DFrehI($b8y}jxGKJmiK?qAdOCLfc=zu?(Ucg1f``TdU` zzwVC5?AoEk%M%2?&p#pn!w_`$`M4#Cp%l4I8*zGjuoFpQ$vB%=HxJ?q=Alati<)-0 z&I*Uo?FjiyFG7H(3Ho{+d{3e4f`3FQg(d{a?YE_I<@&WhIpCZhFPgFDLH-3A|Dvg` zyW-xiG|j*tXvYji zQNqNwqF><)rfTr8{k^oVOE?xIoh~pikjJugP>R2&kbxwg3{x|>jOYIN z(xca%e%+bRcK6TW-=OgkD0QXAhnNDHr7teH|B7?|clzxAq#|MhfVZY3W=sVg-;0)vlYVV$lrQ}!o5bemFpsc^=&&WFARIPnYVM_@BSU3XoLoyY{y-PuvJqt6 zoaN+lrvP*K0%)Ce&F)gLZ#Y$sTPo7Oc_X1%66puDxAXxDP1D$tQv5|teL01q)BDG} zr(XTmtcE|%g(B~x*1cr2P0gX;BnBEAUIGUACp10+vFAD7A5Q;GzInl{(?fMtYn7Te zTa{+~Poa0($x1ESUa1!%yyL~*%>47Oe)fom9-R3HUH5!T*Fgb7AcQ~&ux*q6z8ssI zdkBRLG$TZA^I8l;VAx>-Pd}x9@%?3d0T`k3Gd;&8lBi^$V-sGG#g2q1<{UaZ2ha^2 zAwUR$5CVh%1ksRS`N~bRe)^;P51%lr;g-2jU7^&Q&#_Hyr`O;1 z&=XhRRd&nir|0+x1RujU%fmyCIOUKlPx{FbXC$j)_$q{kfe{L?B|2tFHY7QD+pzyqa?w%aOhgI<1@9j$|?~v^upmx8bF(OF{ zJv}4_*Ibese%y_0#q!-R*JWFK*7!~_5vizU^(#-3?ro=b$Y542ZQ{*0*HT^{!!!hz zX<}&-TR}xlBA+So%3CYC|7YCS_ABkM+qQe{ebSLTg4`+SZ`xTxOvoaJki7olqIG}% z-IM1((9r%0p!f&`AH$X7F{aF*VxPT7oqWc5dtEqsk1-=lK^P;Nz>b$;Rn-DhDhEx_U-;Hg*~tS2WPo-a|T_rFC-`PM~q|WyiA3HnlXb+eC8s7;1L^8kx=x zbe)cPZP|{A!N>QqmFipn)b;tk%q8)PYI>X3(lGNmQdNVoBPLJ&c_u3sH8ONal2m0G z<>d*6Z#Rm;qlZ#fSKeut*RHP^R9+jas~-u5kePN${k@cOX>3uV)ZY<2^}yQ?JoV_Z z+x_ao>gkO*0u&#C;9qdk;K5d=mf&4YI0qzL{pX5mXAK+a<)R9 z%O4-5q_<2-EfT9psb$k16#1?Jst4Dzc6kGHrZ=(2Vf!$8#}N$Ob{kUFN$f}jEo6a` z;CmnhejrhRa`GtYVn+n4=d5nJ^_u6eZ(7m%^h^1C2OpE*-*8AMH0;15c0KE&3FrJY zK6FfyOedb}qol$ux;Xs<6f=1|*9GOH>ju&C6tU`R?0AAj(`KMrR}x8t`5Kt!sVeI5`#`|U@Mbvd46iTqxaBw^$>cSR+6Q6Xa8{_9{&QJ zf5Rr09^skBXV#d^?`PcZ;lf zV-lvVVMH~YyvxuryVJFP6SMDslGddSWV`#2zC^cd>_ikh9Kr~N(KLk-3Za*eCfCu? zee3x*PI%_tSFYQmH?!!*b^`uIf=|GepuK4^`o#0Ub>W#;pL>QDikrpF4HO5mxWy91 zY@X6UhGHf|F_Wj1FVfxCiRVa$?X@lCmIr=7A(ul*#pt6?Q|J-l7Yi7se{1=6-#(wM zKu^OXd!s^g17B&8vXp9G`m$(WH-|`BErto2OtNuF7ul{Z>PHPC9ElQ+M~Ea7gpzSW zWpV6C7&{UoF>DCf)hv1C<#`j%yZ!gg>o>nP19JSEG(G`Wf}HBI=E)nLxa@+1&OE<; zZBtWt$c}`f7C|8S3k6Cll$1y*2`A&kQc-ja(zyUsfF6qC7c(@?c|lmQ7-l4dRN7B_ z8y-K4&$&#?GZiY(oO$Me5&`56zb-~9Xx$ngo#_yoNQ>CU!|51zgE56+r;&wbBE zYRXAfl_7%w#otm=;rohcB#f_F6X2p9**PX2WXh{FoB=Lj+SGFG%{TQwpC7LZ5eGF+6X+4P}oK{bWGdAuxu)7 zE2tV&#+1irJ^P2B-2L5$%SYg(@Hi@<+b1~y(U`O>()SBdGW}m_5getr> zI2`3=EfgN7M=Ow}9Bbcrm{PHiaIzXRB*=D`aC0H52UQ?UgHpleuar^<1l5C51o+PH zF8 z%y69Y>N2cIg1)>2>7rX9qGbuzPJNu#d2e7RQv`(Ya;5vc{#g_Fj5z~uoKQ&T7CS|? zw-HUL(m*$BW?fA0MKdH$#v|LIsH`g|oQxxcMyXUp({z+lglvoILFFudd)?wI z&b{ZfT4+2=rf$HgzY7dqWj_mh+^3s)U8laJ|vQ+GHa z8V>e5>8>@G@G)gto~f|x$S+i(c#%>8cC?yeUmFdxAHgjR5J}dc84@?|Gti-^98yoR zstnxIBJT7^UG%p1k;xnXj$9gAMIVCPKic%-}y{N-ozuq_^|FCmtDS z95$kI|G;(h;lrZ47?!?EAhjAh8b&vCYU(AOZHl6k!B!r^jG)=Xk7m z66qH9F*IhlT~lu>6x|7B!;ad>NATMN!$WpB?8y6u?6^nr_P+n>_{oz^H}DZCr9`P~ z>URxY{aR_(wwMugU(vH+1)CN>EnK%qELDSMO1z@aK!>2Lx|+(mO3(}p%S0+aS5}j1 zT;9+}BV?+d4D4)9B9 ze7}S&IphX1bhLJ&N(0!+MPeX*kHSC?k(v?gc=(A_j2wfKF3R&z($C@hcbj47k0Np8 zT0X=jI}<(j2Zzu8%EkBZ29-3;xRFP$xaz1Y-YiV!LnyT%;&pd@8xc8A7}{>=CPFju z@;SBc&8ebs`K!b$Vp!oatgt|q6n!0nR82LNH5C}42)b>c8#cOWxo=ILa_Yl>T=aY* zN!Zmr=g-SJ^ZW-1K4UF!-S+)RvizZ9CIhO33Ou}GiTuC-ovob&r7V`_BLayh1*O~o zLK6(xML@`SYCP=H7W1 zE2h25+0Q)6toyEU);xFr{^z`yUc`IUrs<*Po;7=f}Zl?RT8E7_&Lb;>Xg-1QCVM&VOa>nKsPN=f_N(VdSdM9U*$6-_>4I{ z)5i8Sw=I*NYbX^UWP!kQ2wabRI!$+HAEj)D5P5W6$5R@me2!8sL#(QfVLR>1pk4MM zR#StL0n&HTLl&j}be|oscw^nt#fxV=^6ZKlqiOutfByR)x2-Gk`0?keOmAB3bLR0J zcgGdXz4eN9t5$XXs&@CURULlDF*|t!`2*}|cr2!cUvw~{QT$w<&b2GqFn<=kn^vQT zbfPsWY}-N;l1QwIVp>NNP&Kp~!w#VtCYoUZ8cJz|Qf0rW9Q(cB^BFSujCs=S*K{qb zl$}z(i$X^;EQF>J6G@PgUKEM)LFBsHk%cVLL=rO;p_u7s`Lt))v}hKCcixw}F}qPQ zd<4o@genG=k)d3XN1%C9&EthG~%L%CT|zCdTd&XZJ(* zqN}+J%?hDgHbUqqVS%vFbsgzAIX+_spRuSfGhQ^2F6Q$oO?fCn5EM{oXr_s7h1ltU z-6&=q7EGIk!e_{^K_rt=!gdw;l0zwG**JeD@ycP;jopRH5u->{meIao9{Efk z_1h2S#=TGAokhTM?Q8nuQP+LbuRN zlSnGk$7f9N8B5VV1b_&_iGH?kz2mB&Rx;WVk$+}7^2UjuezQ@_zupXruxFv^J zB1&a-ig-MVMB)cf%w=#2Ib;B)Wnm?1P=Uw6XaATtAAXuAF1eROe|7;88IYPjll=^n zr7N3xX{^a{w_HTW;-%!$8T?|7{6H^gI=Z0~O_gKWA%qYFoz{eopBPKt2R?ANX&2;-7pYF2u%+WDNi09tv&cfK0^kdF(HIZZ<;!w=}`h1 zAP^|cK)NODSd7ZCBUt+EG&-AFsjRETbzKVi0_pxV>HajyWP_dOQ>+fCU)srvtJ>clRy@*INH<)MNi-&A&YFaE!PtmL{;SUT@8rq0d3Z)fT zOD71audGn3uFwfOWO5z_-$xmZl#-soe(qnp&hYpJhIj8~>e4Jy8-(LR>Y&|hDy6Bh z#x(1IbeIuciAoizQpAZQO$EdIMwl7D!u5|PC=K=l7M-Mc84u$)bb^3dtwyy{#r5VX z_x6zWi@2FAZl=W0)-tWy3fJC$hg^@(3%~z0EBAhdy1I;G4X@q4L+iv5_CG!>?wvh{ zl(1>^2@qf{L_t8k+M?ZP(5y8`k_6YwP%IZwMxmra8-tVrDHWMqfeY_^#HP^^${TuU z)>B;JVugcts0h0>%Ni4`1MT@YUhXuVUv$F;*f#BIjlq##;;_l-S6;=*dKj&V;x0Bx zh`U|lD54w1q)AE=M|4_k!XQ9ujWLF7K1as)(b~|iuRz@8@K1jXxjcV)`ZuVB8ht08 zWzVyFd3feL3k!>6@R5^cKE{bS_m9&U z*Tc)^5kerP0s+!!q|~^^U>t*S9I{29^56hDzktw+APlI?JYeqLT|^p1^?K*hdw+U; zsgyD7`|WYkAM9fL!7os~dYAiCOP5IP{OZCSOViUdYpZm^5aVhJi2ehlJ^bYlR93v`PtMQ(4 za(Sguxpnm0#jB^@nB8&qZ~uB_?ASBf?{jEP&2aPT%|CwsN72d2$#5uGNOoyAH&R&) z_9NtDiwpH~Vq=r@eZZn!56AIPMkA#{ONlfJsTEQwgp@eO;Q0kU{rEDy!y{zMTj{hC zl#{CnaXev-Y1V-_qK*Y2HT{pc-1zVebNA*c4GogUF;Yrws<6W1IEJ{J62+iAhl~O* zlc(8OIXgU>JG<}b;YOxM4GX8R2c0>JO};|XogoPyKEExTJNM@Gw`V6NpNnEk(5~Ki z{%5;pyuA0qliS=P+S`nFHX+=N2;s!-_T>Eag_X-6ToK?OY*vLCVhw`2w4XN>p*Mf)OUi0c)idA%XcQ3JUvdKTmYM3 zQ%hIYlC^h~t#$kW@~tE&U9j%S@bvq|k%8ZA#&Y&a9k z(v}h2@(3os8SM@sRN>5Pmq$co3%id!FTM<2rFTN7TA!!`4HRLgWnY%qpkg zHEZTkH|r2REQmqh4`fTe}fF zW&FaJGWpTf<;t)Sf+!VeZ8`AWpWqgHe&_nzPq4-W>p-yj_M=f{;r!*d-tAiK)of0F zqNKUBRBcQi`Q@MQ@)=n>VLG#SN32uWKx8+C?MAOZm@VV=77>|z<;Jy6v)=A(*|n{N z*ViF_&}=O=s%bZ^Ws3fsh#Ip7e@bll<`SRLyC+{P4fJNm%A;dD>WhnCou9h>wat6J o{@B(7PyJlwM*qO)KKK9hA3LITJBri-VE_OC07*qoM6N<$f^E4qNB{r; literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/main/home_rank_Headdress_first.imageset/home_rank_Headdress_first@3x.png b/YuMi/Assets.xcassets/main/home_rank_Headdress_first.imageset/home_rank_Headdress_first@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f20adeb614cb216f05a7b4e4dc5ae39e045d71af GIT binary patch literal 30301 zcmV)jK%u{hP)PzB7fD1xRCwC#y?30QWtl#HJ>@N@pE=VfliouOi69^lqzMQpn23sXUBJ$|?pJqL z)^Y9r)(S|ICQTASqz4E|2rZCGdNP?L)9dNyyzME!KhC7VB$O3baPB`cpU>pX`=0lC zuIGO5`??#!sJ!E%0n+*6ua8f~>~DE){zL+J6vpBmTidUnd)coxjIPi-FJyEH-g(Kc z{>>Z~OWtf$O`09#+o953V3feq#xt9?c6{yB%YLzWbd}y&p`%Oi4r}x7hr^nxD`}{9 zwl=DvjimN90Hr`6KRD~?nV;CP<1uS=rQTWLqf7A4O6QjKRiT(YN9Wq%IXO@_OH3so zDMy$C`9gNO=C+$;ho4Z7m zysIT~)F-o^5r4=Pv}6$t!Z-i|gAsUMP%sk76%FV7TWNHqMuGnB_Vx+U)kiknDp=xo zt{@p`0j-r5N_QwL^3&L?6BdoG(kRg1BVa$L6iP+zwCZZQbfN(&Tm`GHb{(x9e-k0c zjB4{ypublf(g&*T`s#n@Ra0j2*mRK4coN9S=@yq?)LOIA75W<}o6#jWSXQmN(HK|g zv1;d`Oh}9R-(GKM$7Atilm3|!;VXl(2_Z@d+!ACV12anV;Z)7P8`b3-30WZjxA)R| zAsg7dIaE9Auk+nUf&Lzqo)>SMz%Xzb=W+})W6L$6i<3uxIrDa}*U_;s)Ep0gOCt6k zLPTuoc?kRxWKe`($U&7dh}9WAv8G8^k=XeQ|5qUIU0hf0-gI#w%Eu9IZ}3EMQQh$^ zy`#HYkx_baSjyWLj#2*54@qp&C0YiC9BQBM5`K@?FMOMjlbpA6%^HJWrfKwB8Yx=_ zC1|ao1cj0US_49B3^y_RCm^MZ|6R{pZ!te(7>LbMPl_A8yq2-?{lb= znB1{x;eU@kVnKRzcSmjXed4;kr}AXgg)A}6rd6{Ui`P_}R9}{B>p1!CT(8t~|M_M- zdNoK@TnY(jIqaBL{viZloFniFoZhafaC?5Nhn6qg^7P8Lavi68;kZy${ZEywpXHS#palRx zNd+jq59a%R5&~{86!RXkUESve`GFtyZ(10Av-exDV3Evbvd<58=URi_wLS{lz?1`} z=~@|J%jnLI0{viTZm_V`Ro(_!9t6<=WHh~0XnkpPZ)t=Qk1i0>J+jci`9m|u64_s-kZti{@@iBul+iM+NDGZdExrG zqVqs(65Tnvv!g&iNNVTRI$jYk_xE>~v+f{Rn2f8QSpTt|D{q*q2cCOF6F}>i;_;aL ziI)Dyl{Sgi2eW%xNT* zKYp?9T^|`4Y)fsCNq}{{v2Tx8VbdMfq1#M`#b;k zg<~!}B*2{)C+N~c|5V(y`=%Jv_ibDH{KXrVt_~0E>49yAIxQ{tjPB`v8KoEZ;gIOU zriVIxuQexRevDKCnf_j092%@k)YbiSC|UP$Gu;0to&L)MsH%MiIMF49XstDI)5|V{ zm;YA^9Z}@9cKGo1DFru8C?!A$hc-=UpJKn>C;L7pgg`kxFvg06zgOycs4LQV;VYE` zrAc}4frc=*&dqmjy)?V0?aaQ`ZZg=>52ZCs+X4qcsH!SmKXX=LbXW13)g6^#&D>et z@$7Z?mvcR*!3+aRK?wn+6im*LNY%iM*9_W;#>IBXejwXHo(VVcd4PK@k^UH|C^QX2 z(FhplpezKf4Nyi<9PGnjM;DZk5W)q7gH%ljP(IvJ{&gB&Nr7lQ3^UcRjKR7xHf~%Q z{@{7}{{D{+?(8@%y}R2U=t@IFgK-YSHehfAUcP|(nG
e7#VjgZreqq{n)(O)Nh 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 AmjD0& literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/Contents.json b/YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/Contents.json new file mode 100644 index 00000000..b4670a7b --- /dev/null +++ b/YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_rank_Headdress_second@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_rank_Headdress_second@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/home_rank_Headdress_second@2x.png b/YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/home_rank_Headdress_second@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..eaab51cc83333d457a62675018d2dc4e5379623b GIT binary patch literal 7618 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%0Dt>uJj8O9|8vjkUG) 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 literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/home_rank_Headdress_second@3x.png b/YuMi/Assets.xcassets/main/home_rank_Headdress_second.imageset/home_rank_Headdress_second@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2963adbace330bffc36b7f81c28c6a8fa5af59dd GIT binary patch literal 15650 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 QumAu607*qoM6N<$f~(46*8l(j literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/main/home_rank_Heads_bg.imageset/Contents.json b/YuMi/Assets.xcassets/main/home_rank_Heads_bg.imageset/Contents.json new file mode 100644 index 00000000..ad9fb913 --- /dev/null +++ b/YuMi/Assets.xcassets/main/home_rank_Heads_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_rank_Heads_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_rank_Heads_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/YuMi/Assets.xcassets/main/home_rank_Heads_bg.imageset/home_rank_Heads_bg@2x.png b/YuMi/Assets.xcassets/main/home_rank_Heads_bg.imageset/home_rank_Heads_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..35054403c7b3ba8e2437b439239e35b555b752eb GIT binary patch literal 33175 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 literal 0 HcmV?d00001 diff --git a/YuMi/CustomUI/UIImageView/UIImageConstant.h b/YuMi/CustomUI/UIImageView/UIImageConstant.h index e4020384..a86d84f3 100644 --- a/YuMi/CustomUI/UIImageView/UIImageConstant.h +++ b/YuMi/CustomUI/UIImageView/UIImageConstant.h @@ -41,7 +41,7 @@ typedef NS_ENUM(NSUInteger, ImageType){ /// 空白图的占位图 + (UIImage *)defalutEmptyPlaceholder; /// banner的占位图 -+ (UIImage *)defalutBannerPlaceholder; ++ (UIImage *)defaultBannerPlaceholder; + (NSString*)configUrl:(NSString*)url type:(ImageType)type; + (NSString*)configUrl:(NSString*)url radius:(CGFloat)radius; diff --git a/YuMi/CustomUI/UIImageView/UIImageConstant.m b/YuMi/CustomUI/UIImageView/UIImageConstant.m index 623b61bc..43a08f3e 100644 --- a/YuMi/CustomUI/UIImageView/UIImageConstant.m +++ b/YuMi/CustomUI/UIImageView/UIImageConstant.m @@ -40,7 +40,7 @@ NSString * const kImageTypeMonentsPhoto = @"imageMogr2/auto-orient/thumbnail/400 return [UIImage imageNamed:@"common_empty"]; } /// banner的占位图 -+ (UIImage *)defalutBannerPlaceholder { ++ (UIImage *)defaultBannerPlaceholder { return [UIImage imageNamed:@"common_banner"]; } diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalIRightmageCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalIRightmageCell.m index eaa73d81..b2805acb 100644 --- a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalIRightmageCell.m +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalIRightmageCell.m @@ -109,7 +109,7 @@ } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { - return [UIImageConstant defalutBannerPlaceholder]; + return [UIImageConstant defaultBannerPlaceholder]; } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageForIndex:(NSInteger)index{ if(self.imageModel.url == nil && self.imageModel.image != nil){ diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.m index b16f4524..415ee2bd 100644 --- a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.m +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.m @@ -107,7 +107,7 @@ } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { - return [UIImageConstant defalutBannerPlaceholder]; + return [UIImageConstant defaultBannerPlaceholder]; } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageForIndex:(NSInteger)index{ if(self.imageModel.url == nil && self.imageModel.image != nil){ diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m index 3c2097e7..bf362302 100644 --- a/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m +++ b/YuMi/Modules/YMMessage/View/Session/Cell/SessionUserInfoTableViewCell.m @@ -240,7 +240,7 @@ } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { - return [UIImageConstant defalutBannerPlaceholder]; + return [UIImageConstant defaultBannerPlaceholder]; } #pragma mark - Event Response diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.m index a956ef43..a2a8bc18 100644 --- a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.m +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentImage.m @@ -56,7 +56,7 @@ } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { - return [UIImageConstant defalutBannerPlaceholder]; + return [UIImageConstant defaultBannerPlaceholder]; } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageForIndex:(NSInteger)index{ if(self.imageObject.url == nil && self.imageObject.image != nil){ diff --git a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeadCell.m b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeadCell.m index ad957925..076d0a38 100644 --- a/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeadCell.m +++ b/YuMi/Modules/YMMine/View/Recharge/XPIAPRechargeHeadCell.m @@ -63,7 +63,7 @@ _pi_BannerView.pageDotColor = UIColorRGBAlpha(0xB3B3C3, 0.4); _pi_BannerView.pageControlDotSize = CGSizeMake(kGetScaleWidth(4), kGetScaleWidth(4)); _pi_BannerView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; - _pi_BannerView.placeholderImage = [UIImageConstant defalutBannerPlaceholder]; + _pi_BannerView.placeholderImage = [UIImageConstant defaultBannerPlaceholder]; // SDCycleScrollView没有适配阿语,在RTL下会乱滚,都用LTR算了 _pi_BannerView.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; for (UIView *subView in _pi_BannerView.subviews) { diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m index 7230921d..db55d8a3 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m @@ -441,7 +441,7 @@ } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { - return [UIImageConstant defalutBannerPlaceholder]; + return [UIImageConstant defaultBannerPlaceholder]; } #pragma mark - SDCycleScrollViewDelegate @@ -859,7 +859,7 @@ - (SDCycleScrollView *)pi_cycleScrollView { if (!_pi_cycleScrollView) { - _pi_cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIImageConstant defalutBannerPlaceholder]]; + _pi_cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIImageConstant defaultBannerPlaceholder]]; _pi_cycleScrollView.backgroundColor = [UIColor clearColor]; _pi_cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; _pi_cycleScrollView.pageControlStyle = SDCycleScrollViewPageContolStyleNone; diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.m index 17e429aa..4a26121d 100644 --- a/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.m +++ b/YuMi/Modules/YMMonents/View/Cell/XPMonentsTableViewCell.m @@ -219,7 +219,7 @@ } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { - return [UIImageConstant defalutBannerPlaceholder]; + return [UIImageConstant defaultBannerPlaceholder]; } #pragma mark - XPMonentsPhotoViewDelegate diff --git a/YuMi/Modules/YMNewHome/Api/Api+Home.h b/YuMi/Modules/YMNewHome/Api/Api+Home.h index 50a695c8..88a93771 100644 --- a/YuMi/Modules/YMNewHome/Api/Api+Home.h +++ b/YuMi/Modules/YMNewHome/Api/Api+Home.h @@ -118,7 +118,7 @@ NS_ASSUME_NONNULL_BEGIN /// @param uid 用户的uid + (void)onceLookAnchorRoomComplection:(HttpRequestHelperCompletion)complection uid:(NSString *)uid; ///首页改版资源位 -+(void)requestCurrentResourceListComplection:(HttpRequestHelperCompletion)complection; ++(void)requestCurrentResourceListCompletion:(HttpRequestHelperCompletion)complection; /// 一键匹配 /// @param completion 完成 + (void)homeChatPick:(HttpRequestHelperCompletion)completion; @@ -127,9 +127,27 @@ NS_ASSUME_NONNULL_BEGIN ///ip检测 +(void)checkIpRegionComplection:(HttpRequestHelperCompletion)complection; +#pragma mark - 首页 V3 APIs +/// 获取我的房间 +(void)getMyRoomCompletion:(HttpRequestHelperCompletion)completion; +/// 获取我收藏的房间 ++(void)getMyCollectRoomsCompletion:(HttpRequestHelperCompletion)completion + pageNum:(NSString *)num + pageSize:(NSString *)size; +/// 获取我最近去过的房间 ++(void)getMyRecentRoomsCompletion:(HttpRequestHelperCompletion)completion + pageNum:(NSString *)num + pageSize:(NSString *)size; +/// 获取标签 ++(void)getHomeTabsCompletion:(HttpRequestHelperCompletion)completion; +/// 获取首页房间列表 ++(void)getHomeTabRoomsCompletion:(HttpRequestHelperCompletion)completion + pageNum:(NSString *)pageNum + pageSize:(NSString *)pageSize + tabId:(NSString *)tabId; +/// 获取首页聚合排行榜 ++(void)getHomeRanksCompletion:(HttpRequestHelperCompletion)completion; -+(void)getMyCollectRoomsCompletion:(HttpRequestHelperCompletion)completion pageNum:(NSNumber *)num pageSize:(NSNumber *)size; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Api/Api+Home.m b/YuMi/Modules/YMNewHome/Api/Api+Home.m index 0f51bb58..0723e5ce 100644 --- a/YuMi/Modules/YMNewHome/Api/Api+Home.m +++ b/YuMi/Modules/YMNewHome/Api/Api+Home.m @@ -146,7 +146,7 @@ [self makeRequest:@"single/broadcast/onceLook" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, uid, nil]; } ///首页改版资源位 -+(void)requestCurrentResourceListComplection:(HttpRequestHelperCompletion)complection{ ++(void)requestCurrentResourceListCompletion:(HttpRequestHelperCompletion)complection{ [self makeRequest:@"home/currentResource" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, nil]; } /// 一键匹配 @@ -163,11 +163,36 @@ [self makeRequest:@"ipRegion/check" method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, nil]; } +#pragma mark - 首页 V3 APIs + +(void)getMyRoomCompletion:(HttpRequestHelperCompletion)completion { [self makeRequest:@"home/getMyRoom" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; } -+(void)getMyCollectRoomsCompletion:(HttpRequestHelperCompletion)completion pageNum:(NSNumber *)num pageSize:(NSNumber *)size ++(void)getMyCollectRoomsCompletion:(HttpRequestHelperCompletion)completion + pageNum:(NSString *)pageNum + pageSize:(NSString *)pageSize { - [self makeRequest:@"home/collect/pageRoom" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, num, size, nil]; + [self makeRequest:@"home/collect/pageRoom" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageNum, pageSize, nil]; } ++(void)getMyRecentRoomsCompletion:(HttpRequestHelperCompletion)completion + pageNum:(NSString *)pageNum + pageSize:(NSString *)pageSize +{ + [self makeRequest:@"home/recent/pageRoom" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageNum, pageSize, nil]; +} ++(void)getHomeTabsCompletion:(HttpRequestHelperCompletion)completion { + [self makeRequest:@"home/tabV3/list" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +} ++(void)getHomeTabRoomsCompletion:(HttpRequestHelperCompletion)completion + pageNum:(NSString *)pageNum + pageSize:(NSString *)pageSize + tabId:(NSString *)tabId +{ + [self makeRequest:@"home/tabV3/pageRoom" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageNum, pageSize, tabId, nil]; +} ++(void)getHomeRanksCompletion:(HttpRequestHelperCompletion)completion +{ + [self makeRequest:@"home/getRankSlideshow" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, nil]; +} + @end diff --git a/YuMi/Modules/YMNewHome/Model/HomeMineRoomModel.h b/YuMi/Modules/YMNewHome/Model/HomeMineRoomModel.h new file mode 100644 index 00000000..3f5b65d3 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeMineRoomModel.h @@ -0,0 +1,28 @@ +// +// HomeMineRoomModel.h +// YuMi +// +// Created by P on 2024/6/20. +// + +#import "PIBaseModel.h" +#import "HomePlayRoomModel.h" +#import "YUMINNNN.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeMineRoomModel : PIBaseModel + +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic, copy) NSString *introduction; +@property (nonatomic, assign) NSInteger roomId; +@property (nonatomic, assign) NSInteger uid; +@property (nonatomic, copy) NSString *title; +@property (nonatomic, assign) NSInteger onlineNum; +@property (nonatomic, assign) NSInteger micUserCount; +@property (nonatomic, assign) NSInteger partitionId; +@property (nonatomic, strong) NSArray *micUsers; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/HomeMineRoomModel.m b/YuMi/Modules/YMNewHome/Model/HomeMineRoomModel.m new file mode 100644 index 00000000..2b1a058e --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeMineRoomModel.m @@ -0,0 +1,12 @@ +// +// HomeMineRoomModel.m +// YuMi +// +// Created by P on 2024/6/20. +// + +#import "HomeMineRoomModel.h" + +@implementation HomeMineRoomModel + +@end diff --git a/YuMi/Modules/YMNewHome/Model/HomeRankAvatarModel.h b/YuMi/Modules/YMNewHome/Model/HomeRankAvatarModel.h new file mode 100644 index 00000000..9432208b --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeRankAvatarModel.h @@ -0,0 +1,21 @@ +// +// HomeRankAvatarModel.h +// YuMi +// +// Created by P on 2024/6/20. +// + +#import "PIBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeRankAvatarModel : PIBaseModel + +@property (nonatomic, assign) NSInteger uid; +@property (nonatomic, assign) NSInteger erbanNo; +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic, copy) NSString *nick; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Model/HomeRankAvatarModel.m b/YuMi/Modules/YMNewHome/Model/HomeRankAvatarModel.m new file mode 100644 index 00000000..58387f69 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Model/HomeRankAvatarModel.m @@ -0,0 +1,12 @@ +// +// HomeRankAvatarModel.m +// YuMi +// +// Created by P on 2024/6/20. +// + +#import "HomeRankAvatarModel.h" + +@implementation HomeRankAvatarModel + +@end diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h index 6bac2886..5ce3fabd 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.h @@ -19,7 +19,11 @@ NS_ASSUME_NONNULL_BEGIN - (void)homeChatPick; ///ip检测 -(void)checkIpRegionAction; + - (void)getHomeTopData; +- (void)getHomeAllTopsData; + +- (void)getHomeRanks; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m index 25394060..f93c5649 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m @@ -15,41 +15,34 @@ #import "HomeBannerInfoModel.h" #import "PIHomeItemModel.h" #import "PIHomeCategoryTitleModel.h" +#import "HomeRankAvatarModel.h" +#import "HomePlayRoomModel.h" + @implementation XPHomeContainerPresenter -- (void)getHomeTopData{ - RACSubject* banner = [RACSubject subject]; - RACSubject* menu = [RACSubject subject]; - +- (void)getHomeTopData { + RACSubject *banner = [RACSubject subject]; + RACSubject *menu = [RACSubject subject]; + [[RACSignal combineLatest:@[banner, menu] reduce:^id(NSArray* bannerList, NSArray* menuList){ //在这里 进行请求后的方法,回到主线程 - dispatch_async(dispatch_get_main_queue(), ^{ - - //更新UI操作 - [[self getView] getHomeTopDataSuccess:bannerList menuList:menuList]; - }); - + dispatch_async(dispatch_get_main_queue(), ^{ + [[self getView] getHomeTopDataSuccess:bannerList menuList:menuList]; + }); return nil; }] subscribeError:^(NSError * _Nullable error) { - dispatch_async(dispatch_get_main_queue(), ^{ - - //更新UI操作 - - }); - }]; - + NSString * uid = [AccountInfoStorage instance].getUid; [Api homeBannerList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { NSArray * array = [HomeBannerInfoModel modelsWithArray:data.data]; [banner sendNext:array]; [banner sendCompleted]; }fail:^(NSInteger code, NSString * _Nullable msg) { - [menu sendError:nil]; - [menu sendCompleted]; + [banner sendError:nil]; + [banner sendCompleted]; } errorToast:NO] uid:uid type:@"1"]; - - - [Api requestCurrentResourceListComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + + [Api requestCurrentResourceListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { NSArray *list = [PIHomeItemModel modelsWithArray:data.data]; [menu sendNext:list]; [menu sendCompleted]; @@ -58,6 +51,69 @@ [menu sendCompleted]; }]]; } + +- (void)getHomeAllTopsData { + RACSubject *banner = [RACSubject subject]; + RACSubject *menu = [RACSubject subject]; + RACSubject *rank = [RACSubject subject]; + + RACSignal *bannerSignal = [banner catch:^RACSignal *(NSError *error) { + return [RACSignal return:nil]; + }]; + + RACSignal *menuSignal = [menu catch:^RACSignal *(NSError *error) { + return [RACSignal return:nil]; + }]; + + RACSignal *rankSignal = [rank catch:^RACSignal *(NSError *error) { + return [RACSignal return:nil]; + }]; + + RACSignal *combinedSignal = [RACSignal combineLatest:@[bannerSignal, menuSignal, rankSignal] + reduce:^id(NSArray* bannerList, NSArray* menuList, NSArray *rankAvatars) { + return @[bannerList ?: [NSArray array], + menuList ?: [NSArray array], + rankAvatars ?: [NSArray array]]; + }]; + + [[combinedSignal deliverOn:RACScheduler.mainThreadScheduler] + subscribeNext:^(NSArray *combinedValues) { + [[self getView] getHomeTopDataSuccess:[combinedValues xpSafeObjectAtIndex:0] + banners:[combinedValues xpSafeObjectAtIndex:1] + rankAvatars:[combinedValues xpSafeObjectAtIndex:2]]; + } error:^(NSError * _Nullable error) { + NSLog(@""); + }]; + + NSString * uid = [AccountInfoStorage instance].getUid; + [Api homeBannerList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [HomeBannerInfoModel modelsWithArray:data.data]; + [banner sendNext:array]; + [banner sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [banner sendError:nil]; + [banner sendCompleted]; + } errorToast:NO] uid:uid type:@"1"]; + + [Api requestCurrentResourceListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *list = [PIHomeItemModel modelsWithArray:data.data]; + [menu sendNext:list]; + [menu sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [menu sendError:nil]; + [menu sendCompleted]; + }]]; + + [Api getHomeRanksCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *list = [HomeRankAvatarModel modelsWithArray:data.data]; + [rank sendNext:list]; + [rank sendCompleted]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [rank sendError:nil]; + [rank sendCompleted]; + }]]; +} + ///得到首页轮播图 - (void)getHomeTopBannerList{ NSString * uid = [AccountInfoStorage instance].getUid; @@ -71,20 +127,29 @@ /// 获取所有的房间的tag - (void)getHomeTagList { - NSString * uid = [AccountInfoStorage instance].getUid; - [Api homeTagComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { - NSArray * array = [PIHomeCategoryTitleModel modelsWithArray:data.data]; +// NSString * uid = [AccountInfoStorage instance].getUid; +// [Api homeTagComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { +// NSArray * array = [PIHomeCategoryTitleModel modelsWithArray:data.data]; +// for (PIHomeCategoryTitleModel *model in array) { +// model.checkedWidth = [UILabel getWidthWithText:model.name height:kGetScaleWidth(44) font:kFontSemibold(16)]; +// model.noCheckedWidth = [UILabel getWidthWithText:model.name height:kGetScaleWidth(44) font:kFontRegular(14)]; +// } +// [[self getView] getHomeTagListSuccess:array]; +// +// }] uid:uid]; + [Api getHomeTabsCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + // TODO: 不能在 API call 的地方返回 UI 元素 + NSArray * array = [PIHomeCategoryTitleModel modelsWithArray:data.data]; for (PIHomeCategoryTitleModel *model in array) { model.checkedWidth = [UILabel getWidthWithText:model.name height:kGetScaleWidth(44) font:kFontSemibold(16)]; model.noCheckedWidth = [UILabel getWidthWithText:model.name height:kGetScaleWidth(44) font:kFontRegular(14)]; } [[self getView] getHomeTagListSuccess:array]; - - }] uid:uid]; + }]; } ///首页改版资源位 -(void)getCurrentResourceList{ - [Api requestCurrentResourceListComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [Api requestCurrentResourceListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { NSArray *list = [PIHomeItemModel modelsWithArray:data.data]; [[self getView]getCurrentResourceListSuccess:list]; }]]; @@ -117,4 +182,16 @@ } }]; } + +- (void)getHomeRanks { + @kWeakify(self); + [Api getHomeRanksCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); + if (code == 200) { + NSArray *list = [HomeRankAvatarModel modelsWithArray:data.data]; + [[self getView] getHomeRanksSuccess:list]; + } + }]; +} + @end diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.h b/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.h index 15206721..a478595e 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.h +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.h @@ -13,7 +13,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)getMyRoom; -- (void)getMyCollectRooms; +- (void)getMyCollectRooms:(NSInteger)page; +- (void)getMyRecentRooms:(NSInteger)page; @end diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.m b/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.m index 29ea5b1d..c94c29a8 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.m +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.m @@ -7,33 +7,42 @@ #import "XPHomeMinePresenter.h" +#import "XPHomeMineProtocol.h" + #import "Api+Home.h" +#import "HomeMineRoomModel.h" #import "HomeCollectRoomModel.h" +#import "HomeRankAvatarModel.h" @implementation XPHomeMinePresenter - (void)getMyRoom { -// NSString * uid = [/*AccountInfoStorage*/ instance].getUid; -// [Api homeTagComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { -// NSArray * array = [PIHomeCategoryTitleModel modelsWithArray:data.data]; -// for (PIHomeCategoryTitleModel *model in array) { -// model.checkedWidth = [UILabel getWidthWithText:model.name height:kGetScaleWidth(44) font:kFontSemibold(16)]; -// model.noCheckedWidth = [UILabel getWidthWithText:model.name height:kGetScaleWidth(44) font:kFontRegular(14)]; -// } -// [[self getView] getHomeTagListSuccess:array]; -// -// }] uid:uid]; [Api getMyRoomCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { - // TODO: 确认 model + if (code == 200) { + HomeMineRoomModel *model = [HomeMineRoomModel modelWithDictionary:data.data]; + [[self getView] getMyRoomSuccess:model]; + } else { + [[self getView] getMyRoomSuccess:nil]; + } }]; } -- (void)getMyCollectRooms { +- (void)getMyCollectRooms:(NSInteger)page { [Api getMyCollectRoomsCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { // TODO: 确认 model } - pageNum:@1 - pageSize:@20]; + pageNum:[NSString stringWithFormat:@"%ld", page] + pageSize:@"20"]; } +- (void)getMyRecentRooms:(NSInteger)page { + [Api getMyRecentRoomsCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + // TODO: 确认 model + } + pageNum:[NSString stringWithFormat:@"%ld", page] + pageSize:@"20"]; +} + + + @end diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.h b/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.h index 615c5afc..df2fe618 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.h +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.h @@ -14,14 +14,18 @@ NS_ASSUME_NONNULL_BEGIN /// 请求首页 /// @param tabId id /// @param page 当前的页数 -/// @param pageSize 一页有多少个 -- (void)getRecommendRoomList:(NSString *)tabId page:(int)page pageSize:(int)pageSize ; +// @param pageSize 一页有多少个 - 默认 20 +- (void)getRecommendRoomList:(NSString *)tabId page:(NSInteger)page; /// 获取更多的个播房间 - (void)getHomeMoreAnchorRoomList; /// 热门房间(个人房)列表 - (void)getHomePersonalRoomList; + +- (void)getMyCollectRooms:(NSInteger)page; +- (void)getMyRecentRooms:(NSInteger)page; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.m b/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.m index de78e348..d6e212de 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.m +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomePresenter.m @@ -19,17 +19,30 @@ /// 请求首页 /// @param tabId id /// @param page 当前的页数 -/// @param pageSize 一页有多少个 -- (void)getRecommendRoomList:(NSString *)tabId page:(int)page pageSize:(int)pageSize { - NSString * uid = [AccountInfoStorage instance].getUid; - NSString * pageStr = [NSString stringWithFormat:@"%d", page]; - NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; - [Api getNewRecommendListComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { - NSArray * array = [HomePlayRoomModel modelsWithArray:data.data]; - [[self getView] getHomeRecommendRoomListSuccess:array ]; - }fail:^(NSInteger code, NSString * _Nullable msg) { - [[self getView] getHomeRecommendRoomListFail:msg ]; - }] uid:uid tabId:tabId pageNum:pageStr pageSize:pageSizeStr]; + +- (void)getRecommendRoomList:(NSString *)tabId page:(NSInteger)page { +// NSString * uid = [AccountInfoStorage instance].getUid; +// NSString * pageStr = [NSString stringWithFormat:@"%d", page]; +// NSString * pageSizeStr = [NSString stringWithFormat:@"%d", pageSize]; +// [Api getNewRecommendListComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { +// NSArray * array = [HomePlayRoomModel modelsWithArray:data.data]; +// [[self getView] getHomeRecommendRoomListSuccess:array ]; +// }fail:^(NSInteger code, NSString * _Nullable msg) { +// [[self getView] getHomeRecommendRoomListFail:msg ]; +// }] uid:uid tabId:tabId pageNum:pageStr pageSize:pageSizeStr]; + + @kWeakify(self); + [Api getHomeTabRoomsCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + @kStrongify(self); + NSArray * array = [HomePlayRoomModel modelsWithArray:data.data]; + [[self getView] getHomeRecommendRoomListSuccess:array]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); + [[self getView] getHomeRecommendRoomListFail:msg ]; + }] + pageNum:[NSString stringWithFormat:@"%ld", page] + pageSize:@"20" + tabId:tabId]; } /// 获取更多的个播房间 @@ -51,4 +64,23 @@ [[self getView]getHomePersonalRoomListFail]; }errorToast:NO] uid:uid]; } + +- (void)getMyCollectRooms:(NSInteger)page { + [Api getMyCollectRoomsCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + NSArray * array = [HomePlayRoomModel modelsWithArray:data.data]; + [[self getView] getMineCollectRoomsSuccess:array]; + } + pageNum:[NSString stringWithFormat:@"%ld", page] + pageSize:@"20"]; +} + +- (void)getMyRecentRooms:(NSInteger)page { + [Api getMyRecentRoomsCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + NSArray * array = [HomePlayRoomModel modelsWithArray:data.data]; + [[self getView] getMineRecentRoomsSuccess:array]; + } + pageNum:[NSString stringWithFormat:@"%ld", page] + pageSize:@"20"]; +} + @end diff --git a/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h index 0da8d7ae..480c7968 100644 --- a/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h +++ b/YuMi/Modules/YMNewHome/Protocol/XPHomeContainerProtocol.h @@ -25,6 +25,10 @@ NS_ASSUME_NONNULL_BEGIN -(void)checkIpRegionFailWithMsg:(NSString *)msg; -(void)checkIpRegionSuccess:(NSInteger)seconds; - (void)getHomeTopDataSuccess:(NSArray*)list menuList:(NSArray *)memuList; +- (void)getHomeTopDataSuccess:(NSArray *)resourceList + banners:(NSArray *)banners + rankAvatars:(NSArray *)rankAvatars; +- (void)getHomeRanksSuccess:(NSArray *)resourceList; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/XPHomeMineProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPHomeMineProtocol.h new file mode 100644 index 00000000..e4c3d079 --- /dev/null +++ b/YuMi/Modules/YMNewHome/Protocol/XPHomeMineProtocol.h @@ -0,0 +1,19 @@ +// +// XPHomeMineProtocol.h +// YuMi +// +// Created by P on 2024/6/20. +// + +#import +@class HomeMineRoomModel; + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPHomeMineProtocol +@optional +///首页推荐房间的 +- (void)getMyRoomSuccess:(nullable HomeMineRoomModel *)model; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/XPHomeProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPHomeProtocol.h index 309c6e28..50536bc4 100644 --- a/YuMi/Modules/YMNewHome/Protocol/XPHomeProtocol.h +++ b/YuMi/Modules/YMNewHome/Protocol/XPHomeProtocol.h @@ -23,6 +23,9 @@ NS_ASSUME_NONNULL_BEGIN - (void)getHomePersonalRoomListSuccess:(NSArray *)list; ///获取个人房列表失败 - (void)getHomePersonalRoomListFail; + +- (void)getMineCollectRoomsSuccess:(NSArray *)rooms; +- (void)getMineRecentRoomsSuccess:(NSArray *)rooms; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h b/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h index 8e480565..bcbd7b89 100644 --- a/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h +++ b/YuMi/Modules/YMNewHome/Protocol/XPNewHomeRecommendProtocol.h @@ -30,6 +30,8 @@ NS_ASSUME_NONNULL_BEGIN ///获取小游戏列表 - (void)onGetLittleGameListSuccess:(NSArray *)items; + + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.m b/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.m index 916e1dad..b02c63f1 100644 --- a/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.m +++ b/YuMi/Modules/YMNewHome/View/Cell/XPHomeBannerTableViewCell.m @@ -83,7 +83,7 @@ _pi_BannerView.showPageControl = NO; _pi_BannerView.autoScrollTimeInterval = 5.0; _pi_BannerView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; - _pi_BannerView.placeholderImage = [UIImageConstant defalutBannerPlaceholder]; + _pi_BannerView.placeholderImage = [UIImageConstant defaultBannerPlaceholder]; // SDCycleScrollView没有适配阿语,在RTL下会乱滚,都用LTR算了 _pi_BannerView.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; for (UIView *subView in _pi_BannerView.subviews) { diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.h b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.h index c68d7bd1..196af968 100644 --- a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.h +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.h @@ -19,6 +19,7 @@ NS_ASSUME_NONNULL_BEGIN @interface XPNewHomeHeadView : UIView @property (nonatomic,copy) NSArray *bannerList; @property(nonatomic,copy) NSArray *itemList; +@property (nonatomic,copy) NSArray *rankAvatars; @property(nonatomic,weak) iddelegate; @end diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.m b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.m index d1085fab..b14423be 100644 --- a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.m +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeHeadView.m @@ -31,7 +31,6 @@ [self addSubview:self.pageControl]; } -(void)installConstraints{ - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.mas_equalTo(0); make.trailing.mas_equalTo(0); @@ -43,8 +42,6 @@ make.leading.trailing.equalTo(self).inset(kGetScaleWidth(14)); make.height.mas_equalTo(kGetScaleWidth(80)); }]; - - } #pragma mark - SDCycleScrollViewDelegate - (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index { @@ -92,7 +89,7 @@ self.collectionView.hidden = _itemList.count == 0; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.collectionView reloadData]; - }); + }); if (_itemList.count == 0){ [self.collectionView mas_remakeConstraints:^(MASConstraintMaker *make) { @@ -104,6 +101,10 @@ } } +- (void)setRankAvatars:(NSArray *)rankAvatars { + _rankAvatars = rankAvatars; + [self.collectionView reloadData]; +} - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { @@ -111,12 +112,20 @@ } - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { - XPNewHomeItemCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPNewHomeItemCell class]) forIndexPath:indexPath]; if(indexPath.row < self.itemList.count){ - cell.itmeModel = self.itemList[indexPath.row]; + cell.itemModel = self.itemList[indexPath.row]; + cell.rankAvatarsModelArray = self.rankAvatars; } - + @kWeakify(self); + cell.didTapRankArea = ^{ + @kStrongify(self); + PIHomeItemModel *model = [self.itemList xpSafeObjectAtIndex:indexPath.row]; + if(model != nil && self.delegate && [self.delegate respondsToSelector:@selector(selectItemWithModel:)]){ + [self.delegate selectItemWithModel:model]; + } + }; + return cell; } - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ @@ -125,6 +134,7 @@ [self.delegate selectItemWithModel:model]; } } + #pragma mark - 懒加载 - (UICollectionView *)collectionView{ if (!_collectionView) { @@ -149,7 +159,7 @@ - (SDCycleScrollView *)pi_BannerView { if (!_pi_BannerView) { - _pi_BannerView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIImageConstant defalutBannerPlaceholder]]; + _pi_BannerView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIImageConstant defaultBannerPlaceholder]]; _pi_BannerView.backgroundColor = [UIColor redColor]; _pi_BannerView.layer.cornerRadius = 10; _pi_BannerView.layer.masksToBounds = YES; diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeItemCell.h b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeItemCell.h index acf4bc4c..5f500e9d 100644 --- a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeItemCell.h +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeItemCell.h @@ -6,11 +6,14 @@ // #import -#import "PIHomeItemModel.h" +@class PIHomeItemModel; +@class HomeRankAvatarModel; NS_ASSUME_NONNULL_BEGIN @interface XPNewHomeItemCell : UICollectionViewCell -@property(nonatomic,strong) PIHomeItemModel *itmeModel; +@property(nonatomic, strong) PIHomeItemModel *itemModel; +@property (nonatomic, copy) NSArray *rankAvatarsModelArray; +@property (nonatomic, copy) void(^didTapRankArea)(void); @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeItemCell.m b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeItemCell.m index 7f61d143..7200bd9d 100644 --- a/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeItemCell.m +++ b/YuMi/Modules/YMNewHome/View/CustomView/XPNewHomeItemCell.m @@ -6,9 +6,145 @@ // #import "XPNewHomeItemCell.h" -@interface XPNewHomeItemCell () + +#import +#import "PIHomeItemModel.h" +#import "HomeRankAvatarModel.h" + +@interface XPRankAvatarsCell : UICollectionViewCell +@property (nonatomic, strong) NSArray *cellModel; +@property (nonatomic, strong) NetImageView *avatar_1; +@property (nonatomic, strong) NetImageView *avatar_2; +@property (nonatomic, strong) NetImageView *avatar_3; +@end + +@implementation XPRankAvatarsCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self setupCell]; + } + return self; +} + +- (void)setCellModel:(NSArray *)cellModel { + if ([cellModel xpSafeObjectAtIndex:0]) { + self.avatar_1.imageUrl = [[cellModel xpSafeObjectAtIndex:0] avatar]; + } + + if ([cellModel xpSafeObjectAtIndex:1]) { + self.avatar_2.imageUrl = [[cellModel xpSafeObjectAtIndex:1] avatar]; + } + + if ([cellModel xpSafeObjectAtIndex:2]) { + self.avatar_3.imageUrl = [[cellModel xpSafeObjectAtIndex:2] avatar]; + } +} + +- (void)setupCell { + // TODO: + UIImageView *headDress_1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"home_rank_Headdress_first"]]; + UIImageView *headDress_2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"home_rank_Headdress_second"]]; + UIImageView *headDress_3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"home_rank_Headdress_third"]]; + headDress_1.contentMode = UIViewContentModeScaleAspectFit; + headDress_2.contentMode = UIViewContentModeScaleAspectFit; + headDress_3.contentMode = UIViewContentModeScaleAspectFit; + + [self.contentView addSubview:headDress_3]; + [self.contentView addSubview:headDress_2]; + [self.contentView addSubview:headDress_1]; + + [headDress_1 mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.contentView).offset(9); + make.width.mas_equalTo(62); + make.height.mas_equalTo(48); + }]; + + [headDress_2 mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.contentView).offset(-15); + make.left.mas_equalTo(self.contentView).offset(21); + make.width.mas_equalTo(42); + make.height.mas_equalTo(33); + }]; + + [headDress_3 mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.contentView).offset(-15); + make.right.mas_equalTo(self.contentView).offset(-21); + make.width.mas_equalTo(42); + make.height.mas_equalTo(33); + }]; + + [self.contentView insertSubview:self.avatar_1 belowSubview:headDress_1]; + [self.contentView insertSubview:self.avatar_2 belowSubview:headDress_2]; + [self.contentView insertSubview:self.avatar_3 belowSubview:headDress_3]; + + [self.avatar_1 mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(headDress_1).offset(-1.5); + make.centerX.mas_equalTo(headDress_1); + make.width.height.mas_equalTo(34); + }]; + + [self.avatar_2 mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(headDress_2).offset(-1.5); + make.centerX.mas_equalTo(headDress_2); + make.width.height.mas_equalTo(22); + }]; + + [self.avatar_3 mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(headDress_3).offset(-1.5); + make.centerX.mas_equalTo(headDress_3); + make.width.height.mas_equalTo(22); + }]; +} + +- (NetImageView *)avatar_1 { + if(!_avatar_1){ + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultBannerPlaceholder]; + _avatar_1 = [[NetImageView alloc]initWithConfig:config]; + _avatar_1.layer.cornerRadius = kGetScaleWidth(17); + _avatar_1.layer.masksToBounds = YES; + } + return _avatar_1; +} + +- (NetImageView *)avatar_2 { + if(!_avatar_2){ + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultBannerPlaceholder]; + _avatar_2 = [[NetImageView alloc]initWithConfig:config]; + _avatar_2.layer.cornerRadius = kGetScaleWidth(11); + _avatar_2.layer.masksToBounds = YES; + } + return _avatar_2; +} + +- (NetImageView *)avatar_3 { + if(!_avatar_3){ + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultBannerPlaceholder]; + _avatar_3 = [[NetImageView alloc]initWithConfig:config]; + _avatar_3.layer.cornerRadius = kGetScaleWidth(11); + _avatar_3.layer.masksToBounds = YES; + } + return _avatar_3; +} + +@end + +@interface XPNewHomeItemCell () ///背景 @property(nonatomic,strong) NetImageView *bgImageView; +//@property (nonatomic, strong) UIImageView *rankImageView; +@property (nonatomic, strong) SDCycleScrollView *pi_BannerView; +@property (nonatomic, strong) UIScrollView *avatarScrollView; +@property (nonatomic, strong) NSArray *dataSource; +@property (nonatomic, strong) NSTimer *timer; +@property (nonatomic,strong) NSArray *avatarsList; + @end @implementation XPNewHomeItemCell -(instancetype)initWithFrame:(CGRect)frame{ @@ -27,24 +163,97 @@ make.edges.equalTo(self.contentView); }]; } --(void)setItmeModel:(PIHomeItemModel *)itmeModel{ - _itmeModel = itmeModel; - _bgImageView.layer.cornerRadius = kGetScaleWidth(12); - @kWeakify(self); - [_bgImageView loadImageWithUrl: _itmeModel.icon completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - @kStrongify(self); - self.bgImageView.layer.cornerRadius = kGetScaleWidth(0); - }];; +-(void)setItemModel:(PIHomeItemModel *)itmeModel{ + _itemModel = itmeModel; + if ([itmeModel.ID isEqualToString:@"3"]) { + _bgImageView.image = [UIImage imageNamed:@"home_rank_Heads_bg"]; + } else { + _bgImageView.layer.cornerRadius = kGetScaleWidth(12); + @kWeakify(self); + [_bgImageView loadImageWithUrl: _itemModel.icon completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { + @kStrongify(self); + self.bgImageView.layer.cornerRadius = kGetScaleWidth(0); + }]; + } } + +- (void)setRankAvatarsModelArray:(NSArray *)rankAvatarsModelArray { + if (![self.itemModel.ID isEqualToString:@"3"]) { + return; + } + if (rankAvatarsModelArray.count>0) { + _rankAvatarsModelArray = rankAvatarsModelArray; + if (!self.pi_BannerView.superview) { + [self.contentView addSubview:self.pi_BannerView]; + [self.pi_BannerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + } + [self setupCycleScrollViews]; + } +} + +- (void)setupCycleScrollViews { + NSMutableArray * array = [NSMutableArray array]; + [self.rankAvatarsModelArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL * _Nonnull stop) { + [array addObject:@"Fuck"]; + }]; + self.pi_BannerView.imageURLStringsGroup = array; + [self.pi_BannerView autoScroll]; +} + +#pragma mark - SDCycleScrollViewDelegate +- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index +{ + if (_didTapRankArea) { + self.didTapRankArea(); + } +} + +- (Class)customCollectionViewCellClassForCycleScrollView:(SDCycleScrollView *)view { + return XPRankAvatarsCell.class; +} + +- (void)setupCustomCell:(UICollectionViewCell *)cell + forIndex:(NSInteger)index + cycleScrollView:(SDCycleScrollView *)view { + XPRankAvatarsCell *myCell = (XPRankAvatarsCell *)cell; + myCell.cellModel = [self.rankAvatarsModelArray xpSafeObjectAtIndex:index]; +} + #pragma mark - 懒加载 - (NetImageView *)bgImageView{ if(!_bgImageView){ NetImageConfig *config = [[NetImageConfig alloc]init]; - config.placeHolder = [UIImageConstant defalutBannerPlaceholder]; + config.placeHolder = [UIImageConstant defaultBannerPlaceholder]; _bgImageView = [[NetImageView alloc]initWithConfig:config]; _bgImageView.layer.cornerRadius = kGetScaleWidth(12); _bgImageView.layer.masksToBounds = YES; } return _bgImageView; } + +- (UIScrollView *)avatarScrollView { + if (!_avatarScrollView) { + _avatarScrollView = [[UIScrollView alloc] init]; + } + return _avatarScrollView; +} + +- (SDCycleScrollView *)pi_BannerView { + if (!_pi_BannerView) { + _pi_BannerView = [[SDCycleScrollView alloc] init]; + _pi_BannerView.backgroundColor = [UIColor clearColor]; + _pi_BannerView.layer.cornerRadius = 10; + _pi_BannerView.layer.masksToBounds = YES; + _pi_BannerView.delegate = self; + _pi_BannerView.showPageControl = NO; + _pi_BannerView.autoScrollTimeInterval = 5.0; + _pi_BannerView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; + _pi_BannerView.scrollDirection = UICollectionViewScrollDirectionVertical; + } + return _pi_BannerView; +} + @end + diff --git a/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m b/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m index 542c35f2..485b761c 100644 --- a/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m @@ -15,12 +15,251 @@ #import "XPHomePartyViewController.h" #import "PIHomeCategoryTitleModel.h" -@interface XPHomeMineViewController () +#import "XPHomeMineProtocol.h" +#import "HomeMineRoomModel.h" -@property (nonatomic, strong) UIView *myRoomCard; +@interface XPHomeCustomJXTitleCell : JXCategoryTitleCell +@property (nonatomic, assign) bool isDisplayLine; +@property (nonatomic, strong) UIView *line; +@end + +@implementation XPHomeCustomJXTitleCell +-(instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if(self){ + [self.line mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self); + make.width.mas_equalTo(1.5); + make.height.mas_equalTo(12.5); + make.right.mas_equalTo(self); + }]; + } + return self; +} +- (void)setIsDisplayLine:(bool)isDisplayLine { + self.line.hidden = !isDisplayLine; +} + +- (UIView *)line { + if (!_line) { + _line = [[UIView alloc] init]; + _line.backgroundColor = UIColorRGBAlpha(0x1E1E1E, 0.2); + [self addSubview:_line]; + } + return _line; +} + +@end + +@interface XPHomeCustomJXTitleView : JXCategoryTitleView +///VIP信息列表 +//@property (nonatomic, strong) NSArray *vipInfos; +@end + +@implementation XPHomeCustomJXTitleView + +- (Class)preferredCellClass{ + return XPHomeCustomJXTitleCell.class; +} +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView + cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPHomeCustomJXTitleCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([self preferredCellClass]) forIndexPath:indexPath]; + cell.isDisplayLine = indexPath.row == self.titles.count - 1 ? NO : YES; + return cell; +} + +@end + +@interface XPHomeMineRoomCard : UIView + +@property (nonatomic, strong) HomeMineRoomModel *model; + +@property (nonatomic, strong) NetImageView *avatarImageView; +@property (nonatomic, strong) UILabel *roomNameLabel; +@property (nonatomic, strong) UILabel *descLabel; +@property (nonatomic, strong) UILabel *heatLabel; +@property (nonatomic, strong) UIView *miniAvatarsContainer; + +@end + +@implementation XPHomeMineRoomCard + +- (instancetype)init +{ + self = [super init]; + if (self) { + [self setupUI]; + } + return self; +} + +- (void)setModel:(HomeMineRoomModel *)model { + _model = model; + if (model) { + self.avatarImageView.imageUrl = model.avatar; + self.roomNameLabel.text = model.title; + self.descLabel.text = model.introduction; + self.heatLabel.text = [NSString stringWithFormat:@"%ld", model.onlineNum]; + + for (UIView *subView in self.miniAvatarsContainer.subviews) { + [subView removeFromSuperview]; + } + + NSInteger i = 0; + for (HomePlayMicUserModel *micUser in model.micUsers) { + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + NetImageView *iconView = [[NetImageView alloc]initWithConfig:config]; + iconView.layer.cornerRadius = kGetScaleWidth(20)/2; + iconView.layer.masksToBounds = YES; + iconView.layer.borderWidth = 1; + iconView.layer.borderColor = [UIColor whiteColor].CGColor; + iconView.imageUrl = micUser.avatar; + [self.miniAvatarsContainer addSubview:iconView]; + CGFloat left = kGetScaleWidth(90) + i * kGetScaleWidth(16); + [iconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.miniAvatarsContainer); + make.leading.mas_equalTo(left); + make.width.height.mas_equalTo(20); + }]; + i++; + } + } else { + self.roomNameLabel.text = @"My room"; + self.descLabel.text = @"Welcome to my room"; + self.heatLabel.text = @"0"; + + for (UIView *subView in self.miniAvatarsContainer.subviews) { + [subView removeFromSuperview]; + } + + NetImageConfig *config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + NetImageView *iconView = [[NetImageView alloc]initWithConfig:config]; + iconView.layer.cornerRadius = kGetScaleWidth(20)/2; + iconView.layer.masksToBounds = YES; + iconView.layer.borderWidth = 1; + iconView.layer.borderColor = [UIColor whiteColor].CGColor; + [self.miniAvatarsContainer addSubview:iconView]; + [iconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.miniAvatarsContainer); + make.leading.mas_equalTo(self.miniAvatarsContainer); + make.width.height.mas_equalTo(20); + }]; + } +} + +- (void)setupUI { + UIImage *gradientColorImage = [UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor colorWithHexString:@"#FFE993"], + [DJDKMIMOMColor colorWithHexString:@"#FDC36F"]] + gradientType:GradientTypeTopToBottom + imgSize:CGSizeMake(350, 100)]; + UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:gradientColorImage]; + backgroundImageView.layer.cornerRadius = 20; + backgroundImageView.clipsToBounds = YES; + [self addSubview:backgroundImageView]; + [backgroundImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self); + make.size.mas_equalTo(CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(92))); + }]; + + [self addSubview:self.avatarImageView]; + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.mas_equalTo(backgroundImageView).offset(8); + make.bottom.mas_equalTo(backgroundImageView).offset(-8); + make.width.mas_equalTo(self.avatarImageView.mas_height); + }]; + + [self addSubview:self.roomNameLabel]; + [self.roomNameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(backgroundImageView).offset(16); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(8); + make.right.mas_equalTo(backgroundImageView).offset(-8); + }]; + + [self addSubview:self.descLabel]; + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(backgroundImageView).offset(40); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(8); + make.right.mas_equalTo(backgroundImageView).offset(-8); + }]; + + [self addSubview:self.heatLabel]; + [self.heatLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(backgroundImageView).offset(-8); + make.right.mas_equalTo(backgroundImageView).offset(-8); + }]; + + UIImageView *fireImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ms_home_heat_icon"]]; + [self addSubview:fireImageView]; + [fireImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(backgroundImageView).offset(-8); + make.right.mas_equalTo(self.heatLabel.mas_left).offset(-8); + }]; + + _miniAvatarsContainer = [[UIView alloc] init]; + [self addSubview:_miniAvatarsContainer]; + [_miniAvatarsContainer mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(backgroundImageView).offset(-8); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(8); + make.width.mas_equalTo(120); + make.height.mas_equalTo(20); + }]; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.backgroundColor = [DJDKMIMOMColor colorWithHexString:@"F5EDFF"]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 56/2; + _avatarImageView.layer.borderColor = [UIColor whiteColor].CGColor; + _avatarImageView.layer.borderWidth = 1; + } + return _avatarImageView; +} + +- (UILabel *)roomNameLabel { + if (!_roomNameLabel) { + _roomNameLabel = [UILabel labelInitWithText:@"" + font:[UIFont systemFontOfSize:15 weight:UIFontWeightBold] + textColor:[DJDKMIMOMColor colorWithHexString:@"18181A"]]; + } + return _roomNameLabel; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [UILabel labelInitWithText:@"" + font:[UIFont systemFontOfSize:13 weight:UIFontWeightMedium] + textColor:[DJDKMIMOMColor colorWithHexString:@"18181A"]]; + } + return _descLabel; +} + +- (UILabel *)heatLabel { + if (!_heatLabel) { + _heatLabel = [UILabel labelInitWithText:@"" + font:[UIFont systemFontOfSize:13 weight:UIFontWeightMedium] + textColor:[DJDKMIMOMColor colorWithHexString:@"797B80"]]; + } + return _heatLabel; +} + +@end + +@interface XPHomeMineViewController () + +@property (nonatomic, strong) XPHomeMineRoomCard *headView; + +@property (nonatomic, assign) NSInteger currentIndex; +@property (nonatomic, strong) NSMutableDictionary *validListDict; @property (nonatomic, strong) JXPagerView *pagingView; -@property (nonatomic, strong) JXCategoryTitleView *titleView; +@property (nonatomic, strong) XPHomeCustomJXTitleView *titleView; @property (nonatomic, strong) NSMutableArray *tagModelList; @end @@ -29,8 +268,20 @@ - (void)viewDidLoad { [super viewDidLoad]; - [self.presenter getMyRoom]; - [self.presenter getMyCollectRooms]; + self.currentIndex = 0; + + [self setupNotifications]; + + [self setupUI]; + [self setupRefreshHeader]; + + [self setupDefaultTags]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + + [self.pagingView.mainTableView.mj_header beginRefreshing]; } - (BOOL)isHiddenNavBar { @@ -41,34 +292,86 @@ return [[XPHomeMinePresenter alloc] init]; } +- (void)setupNotifications { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(homeVCRefreshComplete) + name:@"khomeVCRefreshComplete" + object:nil]; +} + +- (void)setupUI { + self.view.backgroundColor = [UIColor clearColor]; + [self.view addSubview:self.pagingView]; + [self.pagingView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.view).mas_offset(kGetScaleWidth(8)); + make.leading.bottom.trailing.mas_equalTo(0); + }]; +} + +- (void)setupRefreshHeader { + MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; + header.stateLabel.font = [UIFont systemFontOfSize:10.0]; + header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; + header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; + header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; + self.pagingView.mainTableView.mj_header = header; +} + +- (void)setupDefaultTags { + NSMutableArray *titleArray = [NSMutableArray array]; + for (PIHomeCategoryTitleModel *model in self.tagModelList) { + [titleArray addObject:model.name]; + } + self.titleView.titles = titleArray; + [self.titleView reloadData]; + + [self headerRefresh]; +} + +#pragma mark - +- (void)headerRefresh { + [self.presenter getMyRoom]; + + PIHomeCategoryTitleModel *tagModel = [self.tagModelList xpSafeObjectAtIndex:self.currentIndex]; + XPHomePartyViewController *homeVC = [self.validListDict objectForKey:[NSNumber numberWithInteger:self.currentIndex]]; + homeVC.tagModel = tagModel; +} + +- (void)homeVCRefreshComplete { + [self.pagingView.mainTableView.mj_header endRefreshing]; + [self.pagingView.mainTableView.mj_footer endRefreshing]; +} + +#pragma mark - XPHomeMineProtocol +- (void)getMyRoomSuccess:(HomeMineRoomModel *)model { + self.headView.model = model; + [self.pagingView reloadData]; + [self.pagingView resizeTableHeaderViewHeightWithAnimatable:NO duration:0 curve:0]; + + [self.pagingView.mainTableView.mj_header endRefreshing]; +} + #pragma mark - JXPagerMainTableViewGestureDelegate - (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { //禁止categoryView左右滑动的时候,上下和左右都可以滚动 if (otherGestureRecognizer.view == self.pagingView.listContainerView) { return NO; } -// if(otherGestureRecognizer.view.tag == 9000001){ -// return NO; -// } -// if(otherGestureRecognizer.view.tag == 9000002){ -// return NO; -// } -// -// if(otherGestureRecognizer.view.tag == 98777){ -// return NO; -// } - return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]; } #pragma mark - JXCategoryViewDelegate -- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index{ + self.currentIndex = index; +} - return kGetScaleWidth(170); +#pragma mark - JXCategoryViewDelegate +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { + return kGetScaleWidth(98); } - (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { - return self.myRoomCard; + return self.headView; } - (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { @@ -84,18 +387,22 @@ } - (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { -// id homeV = [self.validListDict objectForKey:[NSNumber numberWithInteger:index]]; -// if (homeV) { -// return homeV; -// } + id homeV = [self.validListDict objectForKey:[NSNumber numberWithInteger:index]]; + if (homeV) { + return homeV; + } XPHomePartyViewController *homeVC = [[XPHomePartyViewController alloc] init]; homeVC.tagModel = [self.tagModelList xpSafeObjectAtIndex:index]; -// [self.validListDict setObject:homeVC forKey:@(index)]; + [self.validListDict setObject:homeVC forKey:@(index)]; return homeVC; } -- (UIView *)myRoomCard { - return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 94)]; +#pragma mark - +- (XPHomeMineRoomCard *)headView { + if (!_headView) { + _headView = [[XPHomeMineRoomCard alloc] init]; + } + return _headView; } - (JXPagerView *)pagingView { @@ -109,4 +416,65 @@ } return _pagingView; } + +- (NSMutableArray *)tagModelList{ + if(!_tagModelList){ + _tagModelList = [NSMutableArray array]; + + PIHomeCategoryTitleModel *recommendModel = [PIHomeCategoryTitleModel new]; + recommendModel.id = @"-11"; + recommendModel.name = @"最近";//YMLocalizedString(@"XPNewHomeViewController0"); + recommendModel.checkedWidth = [UILabel getWidthWithText:recommendModel.name height:kGetScaleWidth(27) font:kFontSemibold(14)]; + recommendModel.noCheckedWidth = [UILabel getWidthWithText:recommendModel.name height:kGetScaleWidth(27) font:kFontRegular(14)]; + recommendModel.isChecked = YES; + + PIHomeCategoryTitleModel *hotModel = [PIHomeCategoryTitleModel new]; + hotModel.id = @"-12"; + hotModel.name = @"收藏";//YMLocalizedString(@"XPNewHomeViewController1"); + hotModel.checkedWidth = [UILabel getWidthWithText:recommendModel.name height:kGetScaleWidth(27) font:kFontSemibold(14)]; + hotModel.noCheckedWidth = [UILabel getWidthWithText:recommendModel.name height:kGetScaleWidth(27) font:kFontRegular(14)]; + + [_tagModelList addObject:recommendModel]; + [_tagModelList addObject:hotModel]; + } + return _tagModelList; +} + +- (NSMutableDictionary *)validListDict{ + if(!_validListDict){ + _validListDict = [NSMutableDictionary dictionary]; + } + return _validListDict; +} + +- (XPHomeCustomJXTitleView *)titleView { + if (!_titleView) { + _titleView = [[XPHomeCustomJXTitleView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; + _titleView.delegate = self; + _titleView.titles = @[]; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = UIColorFromRGB(0x767585); + _titleView.titleSelectedColor = UIColorFromRGB(0x1E1E1E); + _titleView.titleFont = kFontBold(14); + _titleView.titleSelectedFont = kFontBold(14); + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.averageCellSpacingEnabled = NO; + + _titleView.cellWidth = 50; + _titleView.cellSpacing = kGetScaleWidth(28); + + _titleView.listContainer = (id)self.pagingView.listContainerView; + + JXCategoryIndicatorImageView *indicator = [[JXCategoryIndicatorImageView alloc] init]; + indicator.indicatorImageView.image = [UIImage imageNamed:@"ms_hoem_index_icon"]; + indicator.indicatorImageViewSize = CGSizeMake(kGetScaleWidth(24), kGetScaleWidth(24)); + indicator.verticalMargin = -kGetScaleWidth(4); + indicator.contentMode = UIViewContentModeScaleAspectFit; + _titleView.indicators = @[indicator]; + } + return _titleView; +} + @end diff --git a/YuMi/Modules/YMNewHome/View/XPHomePagingViewController.m b/YuMi/Modules/YMNewHome/View/XPHomePagingViewController.m index 42c1d422..50911f0d 100644 --- a/YuMi/Modules/YMNewHome/View/XPHomePagingViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPHomePagingViewController.m @@ -28,9 +28,12 @@ @implementation XPHomePagingViewController +- (BOOL)isHiddenNavBar { + return YES; +} + - (void)viewDidLoad { [super viewDidLoad]; - [self setup]; } @@ -49,9 +52,8 @@ _pageContainer.dataSource = self; _recommendVC = [[XPNewHomeViewController alloc] init]; _mineVC = [[XPHomeMineViewController alloc] init]; - _viewControllers = @[_mineVC, _recommendVC]; + _viewControllers = @[_recommendVC, _mineVC]; [self didTapRecommendButton]; -// [self didTapMineButton]; [self addChildViewController:_pageContainer]; [self.view addSubview:_pageContainer.view]; @@ -61,73 +63,93 @@ make.top.mas_equalTo(self.topControlView.mas_bottom); }]; [self.pageContainer didMoveToParentViewController:self]; + + for (UIView *view in self.pageContainer.view.subviews) { + if ([view isKindOfClass:[UIScrollView class]]) { + UIScrollView *scrollView = (UIScrollView *)view; + scrollView.scrollEnabled = NO; // 禁用滚动 + } + } } - (void)setupTopTheme { UIImageView *theme = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, kGetScaleWidth(223))]; -// home_top_bg theme.image = [UIImage imageNamed:@"home_top_bg"]; theme.contentMode = UIViewContentModeScaleAspectFill; [self.view addSubview:theme]; } - (void)setupTopControl { - // TODO: 转为 StackView 来做 baseline 对齐 - _topControlView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 44+52)]; - _topControlView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.4]; + _topControlView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, + KScreenWidth, + 44+[UIApplication sharedApplication].keyWindow.safeAreaInsets.top)]; + _topControlView.backgroundColor = [UIColor clearColor]; [self.view addSubview:_topControlView]; + _recommendButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_recommendButton setTitle:YMLocalizedString(@"XPMonentsViewController2") forState:UIControlStateNormal]; + [_recommendButton addTarget:self + action:@selector(didTapRecommendButton) + forControlEvents:UIControlEventTouchUpInside]; + [_topControlView addSubview:_recommendButton]; + [_recommendButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.topControlView).offset(-8); + if (isMSRTL()) { + make.right.mas_equalTo(self.topControlView).offset(-16); + } else { + make.left.mas_equalTo(self.topControlView).offset(16); + } + }]; + _mineButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_mineButton setTitle:@"mine" forState:UIControlStateNormal]; + [_mineButton setTitle:YMLocalizedString(@"TabbarViewController5") forState:UIControlStateNormal]; [_mineButton addTarget:self action:@selector(didTapMineButton) forControlEvents:UIControlEventTouchUpInside]; [_topControlView addSubview:_mineButton]; [_mineButton mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(self.topControlView).offset(-8); - make.left.mas_equalTo(self.topControlView).offset(8); - }]; - - _recommendButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_recommendButton setTitle:@"recommend" forState:UIControlStateNormal]; - [_recommendButton addTarget:self - action:@selector(didTapRecommendButton) - forControlEvents:UIControlEventTouchUpInside]; - [_topControlView addSubview:_recommendButton]; - [_recommendButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.topControlView).offset(-8); - make.left.mas_equalTo(_mineButton.mas_right).offset(8); + if (isMSRTL()) { + make.right.mas_equalTo(_recommendButton.mas_left).offset(-32); + } else { + make.left.mas_equalTo(_recommendButton.mas_right).offset(32); + } }]; UIButton *searchButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [searchButton setTitle:@"搜索" forState:UIControlStateNormal]; + [searchButton setBackgroundImage:[UIImage imageNamed:@"home_nav_search"] forState:UIControlStateNormal]; [searchButton addTarget:self action:@selector(didTapSearchButton) forControlEvents:UIControlEventTouchUpInside]; [_topControlView addSubview:searchButton]; [searchButton mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.mas_equalTo(self.topControlView).offset(-8); - make.right.mas_equalTo(self.topControlView).offset(-8); + if (isMSRTL()) { + make.left.mas_equalTo(self.topControlView).offset(16); + } else { + make.right.mas_equalTo(self.topControlView).offset(-16); + } + make.width.height.mas_equalTo(16); }]; } - (void)displayMineTab { - [_mineButton.titleLabel setFont:[UIFont systemFontOfSize:21 weight:UIFontWeightBold]]; - [_recommendButton.titleLabel setFont:[UIFont systemFontOfSize:18 weight:UIFontWeightBold]]; + [_mineButton.titleLabel setFont:kFontBold(21)]; + [_recommendButton.titleLabel setFont:kFontBold(18)]; [_mineButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [_recommendButton setTitleColor:[UIColor colorWithWhite:1 alpha:0.6] forState:UIControlStateNormal]; } - (void)displayRecommendTab { - [_mineButton.titleLabel setFont:[UIFont systemFontOfSize:18 weight:UIFontWeightBold]]; - [_recommendButton.titleLabel setFont:[UIFont systemFontOfSize:21 weight:UIFontWeightBold]]; + [_mineButton.titleLabel setFont:kFontBold(18)]; + [_recommendButton.titleLabel setFont:kFontBold(21)]; [_recommendButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [_mineButton setTitleColor:[UIColor colorWithWhite:1 alpha:0.6] forState:UIControlStateNormal]; } #pragma mark - - (void)didTapMineButton { - [self.pageContainer setViewControllers:@[self.viewControllers[0]] + [self.pageContainer setViewControllers:@[self.viewControllers[1]] direction:UIPageViewControllerNavigationDirectionReverse animated:NO completion:nil]; @@ -135,7 +157,7 @@ } - (void)didTapRecommendButton { - [self.pageContainer setViewControllers:@[self.viewControllers[1]] + [self.pageContainer setViewControllers:@[self.viewControllers[0]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; @@ -152,18 +174,18 @@ #pragma mark - UIPageViewController Delegate & DataSource - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController { - NSUInteger index = [self.viewControllers indexOfObject:viewController]; - if (index > 0) { - return self.viewControllers[index - 1]; - } +// NSUInteger index = [self.viewControllers indexOfObject:viewController]; +// if (index > 0) { +// return self.viewControllers[index - 1]; +// } return nil; } - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController { - NSUInteger index = [self.viewControllers indexOfObject:viewController]; - if (index < self.viewControllers.count - 1) { - return self.viewControllers[index + 1]; - } +// NSUInteger index = [self.viewControllers indexOfObject:viewController]; +// if (index < self.viewControllers.count - 1) { +// return self.viewControllers[index + 1]; +// } return nil; } diff --git a/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m index 0d95497b..b301a051 100644 --- a/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPHomePartyViewController.m @@ -51,8 +51,6 @@ [super viewDidLoad]; [self initSubViews]; [self initSubViewConstraints]; - - } #pragma mark - Private Method @@ -66,33 +64,37 @@ make.top.mas_equalTo(kGetScaleWidth(10)); make.leading.trailing.bottom.equalTo(self.view); }]; - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(fooderRefresh)]; + MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; self.collectionView.mj_footer = footer; - } - - - -#pragma mark - 刷新的fangfa +#pragma mark - 刷新的方法 - (void)headerRefresh { - if([self.tagModel.id isEqualToString:@"-1"]){ + self.page = 1; + if ([self.tagModel.id isEqualToString:@"-11"]) { + [self.presenter getMyCollectRooms:self.page]; + } else if ([self.tagModel.id isEqualToString:@"-12"]) { + [self.presenter getMyRecentRooms:self.page]; + } else if([self.tagModel.id isEqualToString:@"-1"]){ [self.presenter getHomePersonalRoomList]; - }else{ - self.page = 1; - [self.presenter getRecommendRoomList:self.tagModel.id page:self.page pageSize:50]; + } else{ + [self.presenter getRecommendRoomList:self.tagModel.id + page:self.page]; } } --(void)fooderRefresh{ - if([self.tagModel.id isEqualToString:@"-1"]){ +-(void)footerRefresh{ + self.page++; + if ([self.tagModel.id isEqualToString:@"-11"]) { + [self.presenter getMyCollectRooms:self.page]; + } else if ([self.tagModel.id isEqualToString:@"-12"]) { + [self.presenter getMyRecentRooms:self.page]; + } else if([self.tagModel.id isEqualToString:@"-1"]){ [self.collectionView.mj_footer endRefreshing]; - }else{ - self.page++; - [self.presenter getRecommendRoomList:self.tagModel.id page:self.page pageSize:20]; + [self.presenter getRecommendRoomList:self.tagModel.id page:self.page]; } } @@ -114,22 +116,16 @@ return self.datasource.count; } - - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ if(self.datasource.count == 0)return self.collectionView.frame.size; return CGSizeMake(kGetScaleWidth(345), kGetScaleWidth(92)); } -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ - - HomePlayRoomModel * roomInfo = [self.datasource xpSafeObjectAtIndex:indexPath.row]; - if (roomInfo.uid.length > 0) { - [XPRoomViewController openRoom:roomInfo.uid viewController:self]; - } - - - + if (roomInfo.uid.length > 0) { + [XPRoomViewController openRoom:roomInfo.uid viewController:self]; + } } #pragma mark - XPHomeProtocol @@ -141,6 +137,7 @@ self.datasource = [NSMutableArray arrayWithArray:list]; [self.collectionView reloadData]; } + - (void)getHomePersonalRoomListFail{ [[NSNotificationCenter defaultCenter]postNotificationName:@"khomeVCRefreshComplete" object:nil]; } @@ -163,6 +160,40 @@ [self.collectionView.mj_footer endRefreshing]; [[NSNotificationCenter defaultCenter]postNotificationName:@"khomeVCRefreshComplete" object:nil]; } + +- (void)getMineCollectRoomsSuccess:(NSArray *)rooms { + [[NSNotificationCenter defaultCenter]postNotificationName:@"khomeVCRefreshComplete" object:nil]; + [self.collectionView.mj_footer endRefreshing]; + for (HomePlayRoomModel *model in rooms) { + model.width = [UILabel getWidthWithText:@(model.onlineNum).stringValue + height:kGetScaleWidth(12) + font:kFontBold(10)] + 1; + } + if(self.page == 1){ + self.datasource = [NSMutableArray arrayWithArray:rooms]; + }else{ + [self.datasource addObjectsFromArray:rooms]; + } + [self.collectionView reloadData]; +} + +- (void)getMineRecentRoomsSuccess:(NSArray *)rooms { + [[NSNotificationCenter defaultCenter]postNotificationName:@"khomeVCRefreshComplete" object:nil]; + [self.collectionView.mj_footer endRefreshing]; + for (HomePlayRoomModel *model in rooms) { + model.width = [UILabel getWidthWithText:@(model.onlineNum).stringValue + height:kGetScaleWidth(12) + font:kFontBold(10)] + 1; + } + if(self.page == 1){ + self.datasource = [NSMutableArray arrayWithArray:rooms]; + }else{ + [self.datasource addObjectsFromArray:rooms]; + } + [self.collectionView reloadData]; +} + + #pragma mark - JXPagingViewListViewDelegate - (UIScrollView *)listScrollView { return self.collectionView; @@ -191,9 +222,6 @@ }); } - - - - (UICollectionView *)collectionView{ if (!_collectionView) { MSBaseRTLFlowLayout *layout = [[MSBaseRTLFlowLayout alloc] init]; diff --git a/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m index ea488f51..a96e7712 100644 --- a/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m @@ -60,7 +60,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; ///背景 //@property (nonatomic,strong) UIImageView *backImageView; ///导航 -@property (nonatomic,strong) XPNewHomeNavView *navView; +//@property (nonatomic,strong) XPNewHomeNavView *navView; ///头视图 @property(nonatomic,strong) XPNewHomeHeadView *headView; ///分页标题 @@ -103,10 +103,13 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; - (void)viewDidLoad { [super viewDidLoad]; if(self.isEmpty == NO){ - [self.presenter getHomeTagList]; - [self initHttp]; [self initSubViews]; [self initSubViewConstraints]; + + [self requestCheckIp]; +// [self.presenter getHomeAllTopsData]; + [self.presenter getHomeTopData]; + [self.presenter getHomeTagList]; } } @@ -114,12 +117,16 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; [super viewWillAppear:animated]; } +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [self.pagingView.mainTableView.mj_header beginRefreshing]; +} + - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } - (void)tokenInvalid { - [[AccountInfoStorage instance] saveAccountInfo:nil]; [[AccountInfoStorage instance] saveTicket:nil]; if ([NIMSDK sharedSDK].loginManager.isLogined) { @@ -174,9 +181,8 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; self.pagingView.mainTableView.mj_header = header; [ClientConfig shareConfig].inviteCode = @""; - [self.pagingView.mainTableView.mj_header beginRefreshing]; +// [self.pagingView.mainTableView.mj_header beginRefreshing]; @kWeakify(self); - self.recommendVC.refreshComplete = ^{ @kStrongify(self); [self.pagingView.mainTableView.mj_header endRefreshing]; @@ -193,7 +199,8 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(requestCheckIp) object:nil]; } -(void)headerRefresh{ - [self initHttp]; + [self.presenter getHomeTopData]; + [self.presenter getHomeRanks]; PIHomeCategoryTitleModel *tagModel = [self.tagModelList xpSafeObjectAtIndex:self.type]; XPHomePartyViewController *homeVC = [self.validListDict objectForKey:[NSNumber numberWithInteger:self.type]]; @@ -247,11 +254,6 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; }]; } -- (void)initHttp { - [self.presenter getHomeTopData]; - [self requestCheckIp]; -} - #pragma mark - XPNewHomeNavViewDelegate - (void)xPNewHomeNavView:(XPNewHomeNavView *)view didClickRank:(UIButton *)sender { XPWebViewController * webVC =[[XPWebViewController alloc] init]; @@ -301,7 +303,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; } #pragma mark - JXCategoryViewDelegate - (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { - + if (self.headView.itemList.count == 0 && self.headView.bannerList.count == 0){ return 0; }else if (self.headView.itemList.count > 0 && self.headView.bannerList.count == 0){ @@ -370,9 +372,26 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; [self.pagingView resizeTableHeaderViewHeightWithAnimatable:NO duration:0 curve:0]; } +- (void)getHomeTopDataSuccess:(NSArray *)resourceList + banners:(NSArray *)banners + rankAvatars:(NSArray *)rankAvatars { + self.headView.itemList = resourceList; + self.headView.bannerList = banners; + self.headView.rankAvatars = rankAvatars; + [self.pagingView reloadData]; + [self.pagingView resizeTableHeaderViewHeightWithAnimatable:NO duration:0 curve:0]; +} + +- (void)getHomeRanksSuccess:(NSArray *)resourceList +{ + self.headView.rankAvatars = resourceList; +} + ///获取所有的tag成功 - (void)getHomeTagListSuccess:(NSArray *)array{ - if(array.count == 0)return; + if(array.count == 0) { + return; + } NSMutableArray *list = [NSMutableArray new]; NSMutableArray *titleArray = [NSMutableArray array]; for (PIHomeCategoryTitleModel *model in array) { @@ -417,10 +436,10 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; [self showErrorToast:msg]; } -(void)requestCheckIp{ - if([AccountInfoStorage instance].getTicket.length > 0 && [AccountInfoStorage instance].name.length > 0){ + if([AccountInfoStorage instance].getTicket.length > 0 && + [AccountInfoStorage instance].name.length > 0){ [self.presenter checkIpRegionAction]; } - } ///选择 -(void)selectItemWithModel:(PIHomeItemModel *)model{ @@ -488,23 +507,23 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; _titleView.titles = @[]; _titleView.backgroundColor = [UIColor clearColor]; _titleView.titleColor = UIColorFromRGB(0x767585); - _titleView.titleSelectedColor = UIColorFromRGB(0x1E1E1F); - _titleView.titleFont = kFontRegular(14); - _titleView.titleSelectedFont = kFontSemibold(16); + _titleView.titleSelectedColor = UIColorFromRGB(0x1E1E1E); + _titleView.titleFont = kFontBold(14); + _titleView.titleSelectedFont = kFontBold(14); _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; _titleView.defaultSelectedIndex = 0; - + _titleView.cellSpacing = kGetScaleWidth(20); _titleView.listContainer = (id)self.pagingView.listContainerView; - JXCategoryIndicatorImageView * indocator = [[JXCategoryIndicatorImageView alloc] init]; - indocator.indicatorImageView.image = [UIImage imageNamed:@"ms_hoem_index_icon"]; - indocator.indicatorImageViewSize = CGSizeMake(kGetScaleWidth(24), kGetScaleWidth(24)); - indocator.verticalMargin = -kGetScaleWidth(4); - indocator.contentMode = UIViewContentModeScaleAspectFit; - _titleView.indicators = @[indocator]; + JXCategoryIndicatorImageView * indicator = [[JXCategoryIndicatorImageView alloc] init]; + indicator.indicatorImageView.image = [UIImage imageNamed:@"ms_hoem_index_icon"]; + indicator.indicatorImageViewSize = CGSizeMake(kGetScaleWidth(24), kGetScaleWidth(24)); + indicator.verticalMargin = -kGetScaleWidth(4); + indicator.contentMode = UIViewContentModeScaleAspectFit; + _titleView.indicators = @[indicator]; } return _titleView; } @@ -512,20 +531,6 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; - (NSMutableArray *)tagModelList{ if(!_tagModelList){ _tagModelList = [NSMutableArray array]; - PIHomeCategoryTitleModel *recommendModel = [PIHomeCategoryTitleModel new]; - recommendModel.id = @"-1"; - recommendModel.name = YMLocalizedString(@"XPNewHomeViewController0"); - recommendModel.checkedWidth = [UILabel getWidthWithText:recommendModel.name height:kGetScaleWidth(44) font:kFontSemibold(16)]; - recommendModel.noCheckedWidth = [UILabel getWidthWithText:recommendModel.name height:kGetScaleWidth(44) font:kFontRegular(14)]; - recommendModel.isChecked = YES; - - PIHomeCategoryTitleModel *hotModel = [PIHomeCategoryTitleModel new]; - hotModel.id = @"-2"; - hotModel.name = YMLocalizedString(@"XPNewHomeViewController1"); - hotModel.checkedWidth = [UILabel getWidthWithText:recommendModel.name height:kGetScaleWidth(44) font:kFontSemibold(16)]; - hotModel.noCheckedWidth = [UILabel getWidthWithText:recommendModel.name height:kGetScaleWidth(44) font:kFontRegular(14)]; -// [_tagModelList addObject:recommendModel]; -// [_tagModelList addObject:hotModel]; } return _tagModelList; } @@ -550,13 +555,13 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; -- (XPNewHomeNavView *)navView { - if (!_navView) { - _navView = [[XPNewHomeNavView alloc] init]; - _navView.delegate = self; - } - return _navView; -} +//- (XPNewHomeNavView *)navView { +// if (!_navView) { +// _navView = [[XPNewHomeNavView alloc] init]; +// _navView.delegate = self; +// } +// return _navView; +//} //- (UIImageView *)backImageView { // if (!_backImageView) { diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebCell.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebCell.m index ddee113f..dac4dfec 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebCell.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/PIRoomActivityWebCell.m @@ -39,7 +39,7 @@ #pragma mark - 懒加载 - (NetImageView *)bgImageView{ if(!_bgImageView){ - NetImageConfig *config = [[NetImageConfig alloc]init]; config.placeHolder = [UIImageConstant defalutBannerPlaceholder]; + NetImageConfig *config = [[NetImageConfig alloc]init]; config.placeHolder = [UIImageConstant defaultBannerPlaceholder]; _bgImageView = [[NetImageView alloc]initWithConfig:config]; _bgImageView.contentMode = UIViewContentModeScaleAspectFill; _bgImageView.layer.cornerRadius = kGetScaleWidth(4); diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m index f4ac0875..bcb83be5 100644 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m @@ -287,10 +287,10 @@ make.width.mas_equalTo(22); make.height.mas_equalTo(22); }]; - CGFloat width = 60; + [self.contributeEnterView mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(22); - make.width.mas_equalTo(width); + make.width.mas_greaterThanOrEqualTo(60); }]; [self.topicStackView mas_makeConstraints:^(MASConstraintMaker *make) { @@ -308,6 +308,7 @@ - (void)configLittleGameState { RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + self.contributeEnterView.title = roomInfo.serialValue.stringValue; if (roomInfo.isPermitRoom != PermitRoomType_Licnese && roomInfo.roomModeType != RoomModeType_Open_Blind && roomInfo.roomModeType != RoomModeType_Open_PK_Mode && roomInfo.roomModeType != RoomModeType_Open_AcrossRoomPK_mode && roomInfo.roomModeType != RoomModeType_Open_Micro_Mode && !roomInfo.leaveMode && roomInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { if (!self.gameListView.superview) { [self addSubview:self.gameListView]; @@ -321,7 +322,6 @@ if (self.gameListView.superview) { [self.gameListView removeFromSuperview]; } - } } //自己是否在游戏中 @@ -531,7 +531,8 @@ } - (void)onRoomUpdate { RoomInfoModel * roomInfo = self.delegate.getRoomInfo; - + self.contributeEnterView.title = roomInfo.serialValue.stringValue; + MicroQueueModel * model = [self.delegate.getMicroQueue objectForKey:@"-1"]; if (roomInfo.roomModeType == RoomModeType_Open_Blind && model.userInfo && model.userInfo.uid == [AccountInfoStorage instance].getUid.integerValue) { if (!self.datingProgresButton.superview) { @@ -566,7 +567,7 @@ } [self updateHourRankEntrance]; if (roomInfo.type == RoomType_Anchor) { - self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView7"); +// self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView7"); if (roomInfo.hadChangeRoomType) { ///切换房间类型初始化当前用户与房间粉丝团关系 [Api requestInRoomFansTeam:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { @@ -576,7 +577,7 @@ [self updateContrionEntranceWithRoomUid:[NSString stringWithFormat:@"%ld", roomInfo.uid] type:@"month"]; } } else { - self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView5"); +// self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView5"); [self.fansTeamEntranceView removeFromSuperview]; if (roomInfo.hadChangeRoomType) { [self updateContrionEntranceWithRoomUid:[NSString stringWithFormat:@"%ld", roomInfo.uid] type:@"day"]; @@ -593,10 +594,11 @@ - (void)onRoomEntered { RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + self.contributeEnterView.title = roomInfo.serialValue.stringValue; NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; [self updateHourRankEntrance]; if (roomInfo.type == RoomType_Anchor) {//个播房 - self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView7"); +// self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView7"); ///进房初始化当前用户与房间粉丝团关系 [Api requestInRoomFansTeam:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { XPAnchorFansRelationModel *model = [XPAnchorFansRelationModel modelWithJSON:data.data]; @@ -604,7 +606,7 @@ } teamUid:roomUid]; [self updateContrionEntranceWithRoomUid:roomUid type:@"month"];//获取房间榜前三名 } else { - self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView7"); +// self.contributeEnterView.title = YMLocalizedString(@"XPRoomFunctionContainerView7"); [self updateContrionEntranceWithRoomUid:roomUid type:@"day"];//获取房间榜前三名 } if (![[AccountInfoStorage instance].getUid isEqualToString:roomUid]) {//非房主 @@ -681,11 +683,23 @@ } } +- (void)updateContributeEnterViewTitle:(AttachmentModel *)attachment { + if (attachment.first == 111 && attachment.second == 1110) { + NSNumber *num = [attachment.data objectForKey:@"serialValue"]; + if (num) { + self.contributeEnterView.title = num.stringValue; + } + } +} + - (void)handleNIMCustomMessage:(NIMMessage *)message { RoomInfoModel * roomInfo = self.delegate.getRoomInfo; NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + + [self updateContributeEnterViewTitle:attachment]; + if (attachment.first == CustomMessageType_AnchorRoom_AudienceUpMic) { [self showAskForUpMic:attachment.data]; } else if(attachment.first == CustomMessageType_Gift && (attachment.second == Custom_Message_Sub_Gift_Send || attachment.second == Custom_Message_Sub_Gift_LuckySend || attachment.second == Custom_Message_Sub_Gift_ChannelNotify)) { @@ -1631,6 +1645,7 @@ - (void)configPlayMusicRoomTypeChange { RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + self.contributeEnterView.title = roomInfo.serialValue.stringValue; if (roomInfo.type == RoomType_MiniGame) { [self pauseLayer:self.musicEnterButton.imageView.layer]; [self.musicEnterButton removeFromSuperview]; @@ -1667,6 +1682,7 @@ - (void)handleAcrollPKCountView:(long long)time { RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + self.contributeEnterView.title = roomInfo.serialValue.stringValue; if (!self.acrossPKCountView.superview) { [self addSubview:self.acrossPKCountView]; [self bringSubviewToFront:self.acrossPKCountView]; @@ -1693,6 +1709,7 @@ - (void)configWishGiftEnter { RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + self.contributeEnterView.title = roomInfo.serialValue.stringValue; NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; if (roomInfo.hasOpenWishGift) { [Api wishGiftList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { @@ -1727,6 +1744,7 @@ - (void)roomInfoUpdateConfigWishGift { RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + self.contributeEnterView.title = roomInfo.serialValue.stringValue; if (roomInfo.datingState == RoomDatingStateChangeType_Close) { if (self.wishGiftView.superview) { self.wishGiftView.hidden = NO; diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/MsRoomMessagChatHallView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/MsRoomMessagChatHallView.m index a4d95961..0c392b9e 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/MsRoomMessagChatHallView.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/MsRoomMessagChatHallView.m @@ -550,7 +550,7 @@ return nil; } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { - return [UIImageConstant defalutBannerPlaceholder]; + return [UIImageConstant defaultBannerPlaceholder]; } #pragma mark - Getters And Setters - (UITableView *)messageTableView { diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m index 61e8cd3e..34bc79af 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m @@ -1130,7 +1130,7 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; return nil; } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { - return [UIImageConstant defalutBannerPlaceholder]; + return [UIImageConstant defaultBannerPlaceholder]; } #pragma mark - Getters And Setters - (UITableView *)messageTableView { diff --git a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/PIRoomPhotoAlbumItemVC.m b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/PIRoomPhotoAlbumItemVC.m index 94fbce40..e1440edf 100644 --- a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/PIRoomPhotoAlbumItemVC.m +++ b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/PIRoomPhotoAlbumItemVC.m @@ -393,7 +393,7 @@ return nil; } - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { - return [UIImageConstant defalutBannerPlaceholder]; + return [UIImageConstant defaultBannerPlaceholder]; } #pragma mark - 懒加载 - (UICollectionView *)collectionView{ diff --git a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoView.m b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoView.m index 856baaf6..220df9ac 100644 --- a/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoView.m +++ b/YuMi/Modules/YMRoom/View/RoomPhotoAlbum/View/SubViews/PIRoomPhotoAlbumChoosePhotoView.m @@ -116,7 +116,7 @@ - (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { UIImage *image = [self.picList xpSafeObjectAtIndex:index]; - return image != nil ? image : [UIImageConstant defalutBannerPlaceholder]; + return image != nil ? image : [UIImageConstant defaultBannerPlaceholder]; } -(void)clickUploadPicturesAction{ if(self.chooseType == Photo_Type_Unlock){ diff --git a/YuMi/Modules/YMTabbar/View/TabbarViewController.m b/YuMi/Modules/YMTabbar/View/TabbarViewController.m index a709fc0a..835d4831 100644 --- a/YuMi/Modules/YMTabbar/View/TabbarViewController.m +++ b/YuMi/Modules/YMTabbar/View/TabbarViewController.m @@ -847,7 +847,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; #pragma mark - 房间最小化 - (void)configRoomMiniNView:(NSDictionary *)dic { UserInfoModel * userInfo = [UserInfoModel modelWithDictionary:dic[@"userInfo"]]; - RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:dic[@"roomInfo"]]; + RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:dic[@"roomInfo"]]; NSMutableDictionary * microQueue = dic[@"microQueue"]; [self.roomMineView configRoomMiniView:roomInfo userInfo:userInfo micQueue:microQueue]; }