From a8bbca8a568d49f2e2d19c6255774481cf14370c Mon Sep 17 00:00:00 2001 From: chenguilong <598604202@qq.com> Date: Thu, 28 Apr 2022 20:52:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=BF=E5=86=85=E6=8E=A8=E8=8D=90=E6=9B=B4?= =?UTF-8?q?=E5=A4=9A=E6=88=BF=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xplan-ios.xcodeproj/project.pbxproj | 48 +++ .../room_info_exit.imageset/Contents.json | 22 ++ .../room_info_exit@2x.png | Bin 0 -> 1521 bytes .../room_info_exit@3x.png | Bin 0 -> 2196 bytes .../room_info_mini.imageset/Contents.json | 22 ++ .../room_info_mini@2x.png | Bin 0 -> 1465 bytes .../room_info_mini@3x.png | Bin 0 -> 2131 bytes .../room_info_report.imageset/Contents.json | 22 ++ .../room_info_report@2x.png | Bin 0 -> 1665 bytes .../room_info_report@3x.png | Bin 0 -> 2453 bytes xplan-ios/Main/Room/Api/Api+Room.h | 4 + xplan-ios/Main/Room/Api/Api+Room.m | 5 + .../Room/View/RoomHeaderView/RoomHeaderView.m | 103 ++++--- .../Model/XPRoomRecommendModel.h | 32 ++ .../Model/XPRoomRecommendModel.m | 12 + .../SubViews/XPRoomInsideRecommendCell.h | 19 ++ .../SubViews/XPRoomInsideRecommendCell.m | 138 +++++++++ .../SubViews/XPRoomInsideRecommendEmptyCell.h | 16 + .../SubViews/XPRoomInsideRecommendEmptyCell.m | 56 ++++ .../View/RoomRecommend/XPRoomRecommendView.h | 32 ++ .../View/RoomRecommend/XPRoomRecommendView.m | 275 ++++++++++++++++++ 21 files changed, 769 insertions(+), 37 deletions(-) create mode 100644 xplan-ios/Assets.xcassets/Room/room_info_exit.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/Room/room_info_exit.imageset/room_info_exit@2x.png create mode 100644 xplan-ios/Assets.xcassets/Room/room_info_exit.imageset/room_info_exit@3x.png create mode 100644 xplan-ios/Assets.xcassets/Room/room_info_mini.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/Room/room_info_mini.imageset/room_info_mini@2x.png create mode 100644 xplan-ios/Assets.xcassets/Room/room_info_mini.imageset/room_info_mini@3x.png create mode 100644 xplan-ios/Assets.xcassets/Room/room_info_report.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/Room/room_info_report.imageset/room_info_report@2x.png create mode 100644 xplan-ios/Assets.xcassets/Room/room_info_report.imageset/room_info_report@3x.png create mode 100644 xplan-ios/Main/Room/View/RoomRecommend/Model/XPRoomRecommendModel.h create mode 100644 xplan-ios/Main/Room/View/RoomRecommend/Model/XPRoomRecommendModel.m create mode 100644 xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.h create mode 100644 xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.m create mode 100644 xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.h create mode 100644 xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.m create mode 100644 xplan-ios/Main/Room/View/RoomRecommend/XPRoomRecommendView.h create mode 100644 xplan-ios/Main/Room/View/RoomRecommend/XPRoomRecommendView.m diff --git a/xplan-ios.xcodeproj/project.pbxproj b/xplan-ios.xcodeproj/project.pbxproj index 9d7a2a77..ceb9cd24 100644 --- a/xplan-ios.xcodeproj/project.pbxproj +++ b/xplan-ios.xcodeproj/project.pbxproj @@ -155,6 +155,10 @@ 9B5BF8A827E1BED1005DD346 /* Api+RoomTrumpet.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B5BF8A727E1BED1005DD346 /* Api+RoomTrumpet.m */; }; 9B5F1503280FF02600C3C2B1 /* anchorPk_crossPking.svga in Resources */ = {isa = PBXBuildFile; fileRef = 9B5F1502280FF02600C3C2B1 /* anchorPk_crossPking.svga */; }; 9B6B3AAB278C2EA7005551EC /* XPRoomNobleLevelUpView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6B3AAA278C2EA7005551EC /* XPRoomNobleLevelUpView.m */; }; + 9B6E856A281A982A0041A321 /* XPRoomRecommendView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8569281A982A0041A321 /* XPRoomRecommendView.m */; }; + 9B6E856E281AABAB0041A321 /* XPRoomRecommendModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E856D281AABAB0041A321 /* XPRoomRecommendModel.m */; }; + 9B6E8573281AB9B20041A321 /* XPRoomInsideRecommendCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8572281AB9B20041A321 /* XPRoomInsideRecommendCell.m */; }; + 9B6E8577281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E8576281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m */; }; 9B73CD05279A9A6A006AF255 /* XPSkillCardSaveModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B73CD04279A9A6A006AF255 /* XPSkillCardSaveModel.m */; }; 9B73CD09279A9AA2006AF255 /* XPSkillCardUpdatePropModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B73CD08279A9AA2006AF255 /* XPSkillCardUpdatePropModel.m */; }; 9B73CD11279AE99B006AF255 /* XPSkillCardListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B73CD10279AE99B006AF255 /* XPSkillCardListCell.m */; }; @@ -1018,6 +1022,14 @@ 9B5F1502280FF02600C3C2B1 /* anchorPk_crossPking.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = anchorPk_crossPking.svga; sourceTree = ""; }; 9B6B3AA9278C2EA7005551EC /* XPRoomNobleLevelUpView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomNobleLevelUpView.h; sourceTree = ""; }; 9B6B3AAA278C2EA7005551EC /* XPRoomNobleLevelUpView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomNobleLevelUpView.m; sourceTree = ""; }; + 9B6E8568281A982A0041A321 /* XPRoomRecommendView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRecommendView.h; sourceTree = ""; }; + 9B6E8569281A982A0041A321 /* XPRoomRecommendView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRecommendView.m; sourceTree = ""; }; + 9B6E856C281AABAB0041A321 /* XPRoomRecommendModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomRecommendModel.h; sourceTree = ""; }; + 9B6E856D281AABAB0041A321 /* XPRoomRecommendModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRecommendModel.m; sourceTree = ""; }; + 9B6E8571281AB9B20041A321 /* XPRoomInsideRecommendCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInsideRecommendCell.h; sourceTree = ""; }; + 9B6E8572281AB9B20041A321 /* XPRoomInsideRecommendCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomInsideRecommendCell.m; sourceTree = ""; }; + 9B6E8575281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomInsideRecommendEmptyCell.h; sourceTree = ""; }; + 9B6E8576281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomInsideRecommendEmptyCell.m; sourceTree = ""; }; 9B73CD03279A9A6A006AF255 /* XPSkillCardSaveModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSkillCardSaveModel.h; sourceTree = ""; }; 9B73CD04279A9A6A006AF255 /* XPSkillCardSaveModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSkillCardSaveModel.m; sourceTree = ""; }; 9B73CD07279A9AA2006AF255 /* XPSkillCardUpdatePropModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSkillCardUpdatePropModel.h; sourceTree = ""; }; @@ -2998,6 +3010,37 @@ path = File; sourceTree = ""; }; + 9B6E856B281AAB8B0041A321 /* Model */ = { + isa = PBXGroup; + children = ( + 9B6E856C281AABAB0041A321 /* XPRoomRecommendModel.h */, + 9B6E856D281AABAB0041A321 /* XPRoomRecommendModel.m */, + ); + path = Model; + sourceTree = ""; + }; + 9B6E8570281AAD260041A321 /* RoomRecommend */ = { + isa = PBXGroup; + children = ( + 9B6E8574281ABEB20041A321 /* SubViews */, + 9B6E8568281A982A0041A321 /* XPRoomRecommendView.h */, + 9B6E8569281A982A0041A321 /* XPRoomRecommendView.m */, + 9B6E856B281AAB8B0041A321 /* Model */, + ); + path = RoomRecommend; + sourceTree = ""; + }; + 9B6E8574281ABEB20041A321 /* SubViews */ = { + isa = PBXGroup; + children = ( + 9B6E8571281AB9B20041A321 /* XPRoomInsideRecommendCell.h */, + 9B6E8572281AB9B20041A321 /* XPRoomInsideRecommendCell.m */, + 9B6E8575281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.h */, + 9B6E8576281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m */, + ); + path = SubViews; + sourceTree = ""; + }; 9B73CD06279A9A8B006AF255 /* UpdateModel */ = { isa = PBXGroup; children = ( @@ -4971,6 +5014,7 @@ E8AEAED8271413530017FCE0 /* View */ = { isa = PBXGroup; children = ( + 9B6E8570281AAD260041A321 /* RoomRecommend */, 9B1B72A228002F76003FACE9 /* AnchorPK */, 9B92C01A27E0BAEB0044C5EA /* NobleTrumpet */, 9B7B605827BB52FD0070BB72 /* AnchorView */, @@ -6187,6 +6231,7 @@ E890BC04273CF0500007C46B /* XPGiftCountModel.m in Sources */, E855516A280599A7005F293F /* XPGuildEmptyCollectionViewCell.m in Sources */, E899C68C275093B800E189E5 /* XPUserCardMicroItemModel.m in Sources */, + 9B6E8573281AB9B20041A321 /* XPRoomInsideRecommendCell.m in Sources */, E87A270027588445002DDC7A /* XPHomeListEmptyCollectionViewCell.m in Sources */, E82325F5274E2E09003A3332 /* XPUserCardPresenter.m in Sources */, E880B39E278BD49E00A83B0D /* XPAcrossRoomPKViewController.m in Sources */, @@ -6356,6 +6401,7 @@ E8DEC99E2764A5B60078CB70 /* XPRoomMoreMenuViewController.m in Sources */, E82325F2274E2DE6003A3332 /* XPUserCardViewController.m in Sources */, E8C167182806A03800ECB15C /* XPSuperAdminSetPresenter.m in Sources */, + 9B6E856E281AABAB0041A321 /* XPRoomRecommendModel.m in Sources */, E8C6FFCA27548120004DC9F0 /* XPHomePresenter.m in Sources */, E8412FB02779CB4D006E1101 /* XPRoomSettingPresenter.m in Sources */, E8C1671228067F6C00ECB15C /* XPGuildChooseManagerRoomTableViewCell.m in Sources */, @@ -6490,6 +6536,7 @@ 9BBC028B2786E05A0007C24B /* XPNobleCenterEntranceView.m in Sources */, E8834E4228003A270029CCC1 /* XPMineGuildManagerSetViewController.m in Sources */, E81C279326EB394D0031E639 /* LoginForgetPasswordViewController.m in Sources */, + 9B6E856A281A982A0041A321 /* XPRoomRecommendView.m in Sources */, E8DBB6FD27B63CE000AA285D /* LittleGameMicroView.m in Sources */, E81C278D26EAFAF60031E639 /* DESEncrypt.m in Sources */, E81366E726F0A49E0076364C /* NSString+Utils.m in Sources */, @@ -6537,6 +6584,7 @@ E8AEAEF027141C430017FCE0 /* XPRoomMenuContainerView.m in Sources */, 9B85F3532806AB9A006EDF51 /* XPAnchorPKResultView.m in Sources */, E8DEC99527648FA50078CB70 /* ClientConfig.m in Sources */, + 9B6E8577281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m in Sources */, E880B3A6278BD69900A83B0D /* XPAcrossRoomPKTableViewCell.m in Sources */, E8EEB90926FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m in Sources */, 9B9DFD9A27DB2194000F95B3 /* XPSessionMessageHeadView.m in Sources */, diff --git a/xplan-ios/Assets.xcassets/Room/room_info_exit.imageset/Contents.json b/xplan-ios/Assets.xcassets/Room/room_info_exit.imageset/Contents.json new file mode 100644 index 00000000..0cd96b66 --- /dev/null +++ b/xplan-ios/Assets.xcassets/Room/room_info_exit.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_info_exit@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_info_exit@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/Room/room_info_exit.imageset/room_info_exit@2x.png b/xplan-ios/Assets.xcassets/Room/room_info_exit.imageset/room_info_exit@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9024489fa47ba5c1df4eb06230ea4cff95409e GIT binary patch literal 1521 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 AGynhq literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/Room/room_info_mini.imageset/room_info_mini@3x.png b/xplan-ios/Assets.xcassets/Room/room_info_mini.imageset/room_info_mini@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..186a84cddf5b1563e1173e1742018ad5d41066cb GIT binary patch literal 2131 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 literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/Room/room_info_report.imageset/Contents.json b/xplan-ios/Assets.xcassets/Room/room_info_report.imageset/Contents.json new file mode 100644 index 00000000..f45b3963 --- /dev/null +++ b/xplan-ios/Assets.xcassets/Room/room_info_report.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "room_info_report@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "room_info_report@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/Room/room_info_report.imageset/room_info_report@2x.png b/xplan-ios/Assets.xcassets/Room/room_info_report.imageset/room_info_report@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bdfb74e6bce9e12c4c4a1161ccf56d5b507fb9f8 GIT binary patch literal 1665 zcmd6n`#%#30L9m9mgj69%jC5+lhSi0kr0&@Rjq;R>+SERQvI%L`F|F)uM4=g(l*JDaC{#Cv&$N_a|I6BWQWjn{O&IM`tQ$C zdz``SV0MVp;|X?5XMBL?RCi@!#L=fL`Y~>b^nUdy7t^o|LfZB4Nb zAa!|zZWN6{X2%z*YB*t%c!e^URX&vvzO^!|gPb<3N*vWd1H$eB80i8y${ZyM@l!k;&{G{}EF%_cU9 zJKZdT+`r%p>+d8XL~Ubb;Fb`AKClz;4Em*GB-#vg7j0(o_bxGyw3Hqb#c*_qwp?EI zyZJsL1?S7wRdP%N2Y6`0fUI`{(dx^kx9*O_8|R&aYz&2+cP{K_GQyO;T<1VoE-mj! z_SI0AE&6bX+%uNH8Bo9*S=`n)RnV!g;AfJ^?3D=Ry;px64DIl|tj z?CwTDpjp&y<=7|^Z^!XICu}p-F$e^K7qs)SRl8NPnC;D`Co~(yvecvdKZT^JGlZ75 zf1;_!2N#Mv9zeQb>kj)10ZtVqaP^V2jgxNcrDteq4UY)2XH+FmV2^k>Eb2mq_589C z8-)6;R%^0q4XF{LnPg3r(S;Nc^)~zjXE~z0aflnY*cnIv&Ki5?lwALcb}|63F~eRG zoZ(Fb?>U178kg(O1RAr0`Ilb#kxsSNBUy?*-UakjZ#{8)LKsu@PH0!@SX!QNnohZH z1;%Zdp6`rx7k}zfN1{;&T3k`g>5-}JYsFzJg2M6DF z0zMTOV#b()CqG?ia@lhGIDrxNqKQM#io4{Yr%gdgQV4zq2Twuv$os>sz{?pWn5I4> z;y-H9g>Ys;69yhM2Q>OXlQ%*p3l7hX7D!|?Im2hbHS8TFmv~WFuCN0<^j@j5${=0+AC*4=K3?(crzbfB4*qu^LhR~AwnEa-LV(*Ed|%kKZJp% z-PhcrQ50dJ*x|2uhMa98Jb2t_cDnp@WZ}IbNoexCPR;aY;Rq>U<3QERS$oElva*X< z1YVg?MtW?u)i^q_3wUWFMrDHZ(Y^k|SkEvB60P=*#;2FLL;Y*pSQ@X)<2A}2U9KL; z@z2?G>Ev}}MPZJOo?{|tLfb#JIdl6%Mbt^%qTNYFJs!ok92y3V+iHbEJHj=~41Y`R zr=gO*yQle3|c znQoQtr5Aq%EqcgRrt-G?0;mxH0KP(A4WZDZkO#Lapg5z99}Lz`G$FCwYHy+2i_)WY z0TfM~YgQAgkwQxBc}6?X-&;I`s?ZB-5nwSpaa&se=53smme0-gYZndha3i=jxP)E) E4=q<;OaK4? literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/Room/room_info_report.imageset/room_info_report@3x.png b/xplan-ios/Assets.xcassets/Room/room_info_report.imageset/room_info_report@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..cf22a5f32e34238a8f50970ebab8895244edb659 GIT binary patch literal 2453 zcmd6p`9IT-1IMSF3)_t4%nmG?tF=bN%v{OYBIMYRqr^U` zH_DNaay8c+iJGG1XdmDI;`@3$Ua#lt$JdXqWJh}|DX=0K1OiFfSW}#LSo}YW@7~EZ z+??hPsvM6~Ed&C=PTk4>f7Q-LZtrY02zRzWfd>)vaQl%;Fsa>Yiw2^`auQn#AJGzuSB75+F7IbY=-d}J4D|lZN{Y=8b z10Pra^`(!-`c-lqGWF3MFp1NDkjqz0Z`U|Ki_@=?pc&qN5fA(}kyFkJ?0t~@*-k#G zoz8`599CCW3^KYsoHTjeZ#AAtpvq%`VkZbHaq1cFW3pQUgN`G7Vt&3Mfwerx&1P0# z&%msS(B*aB(sldo!ffcx8Rc=QGM~+l>o(R*8`}1ivG(|e7+Uqnc9hooy@S?C=s39B zLp>F;I~U;qrxB&&4fkZ6Se$^h2@};3-mvfR^Bua(&y2HNQ`n$fLs_9Jb4a|w(!~^- zz_@@5O(x`oT>zXWpl$qEoEQA%G%P5_Mmf$(Z3eR97CKAJ+6!>`Iqrg+>-i3ws&$vf z^7l&uLdIfg+HydJEKh*~6;>sAeBX?DTIbfa8fi0TiYE?6rLs)3{4ySOfekhdEj&)Q zOu!$S`c+E?aAKGcQ~zp7tK6GFlHn#zKL&p=(9_98;`hSCE3U7asGfxzR<7wH><+!w zbclvxXU08On{xqn5vdw=GbLTygZ)sM*4?Q1vN}p&{!idSv_LK`n-^g2N5K-}rFR$q ze);Np2^?VC)K|xftH{WQYsv9Kz1_GOtaYB-&|hDjTKrcMb%;S}2#&l*9ie_RD6W*I z9C5yZDqGnoXqTuns3teB}T#FC8K zrsTivp>NT*-aPwrgBkuc@gK}%!jDCK=Dugyoq<6@OtZ~5_NWlkrcv{o4=$n@4kfs?ZRk;imJ=Ub~$zZn-{S-i=c2_ zgldbY5Dc5D#Hb(xQoVD-t`yo6FF3A=*LkRl2zB!OOaEyk3abbtR-jqy8}0(&(?BBF zVEAnwzMS^3QABPz5JNld5}Cz(5`xy6^njn`=}VyzSS`-O$2m?*%Qd(84Q;QWPQIxM zWaHP4{VtXwa{R@fq5|Rg(ZZ9pj;5XJ+*08|8C^xHb`S~O zu{(xofi6u~u~vbm9Yu*b6AxQ&9f;%H(H+{h<=;mrSoYu*kKYUNAtr2TNzLNKlC4AQ zd3o2i)CeWSw&$5%CbL&}JCkG1`ophVpTtCEDc-*4Dc9Ck*6(T_r1RcpX|uFewO2lD1a8&Fz=*%i3F* z8cUMbqF|O@EZj#FSv2Df^0( z{vqaoMSSCO#x5)8bgHWRfK4EjHh$bldB_T^;ofqn)Ylj|)rP}L+UuEh+1Gl75ELO! zME;}Xu%~eMrtbBQ6SYucVi&$7A}O0R78~WT>yOEvt*qAVu&M8b*(hz&WuEv<-~eVbDGAeLe)#Q%H zyYs3)^7fq#hCV_OMI#+uK(iHWs=8y`aJ##?TD;xq-1ha-ajcyFnm_DmRg2;|N}hAu zJ4m-#c>q*PKNGc@(=nP!t#d8QyZ5@MkCdO?JLaH1x>V{hhfHt%6?6K%7m^9XU5Mlt z6&ffXbvxPl4TEP_A2c|>PKC#bt*$3}2p^Dzgl~~xLqgv7<2a@5#06B2y4(F6qGxfG zNWhO_@EsfvDtYwSp)#Q{c1L%T%df@i)PF~$Uo@;q>={Vkr(P`fbZ*xM$WeOj>Tlnp zAd`hkdYQ;m>CVx)RZ;n(QwwVINCT|B_;3Te6tDmBlCg5RU%L7%gkl>6#mN>}#JArI>Ztc-O{V zlAeE)D`^bn=`I(o?<^I}KLtSQJXPJ`4AhQ;~5=!awhE86___IECl)u?d z011q|;vL&=0ZL4B_Zwq$Xi-FK8B&<b} #import #import "TTPopup.h" +#import ///Tool #import "UIImage+Utils.h" #import "UIButton+EnlargeTouchArea.h" @@ -24,20 +25,22 @@ #import "AccountInfoStorage.h" #import "HttpRequestHelper.h" #import "Api+Room.h" +#import "XCCurrentVCStackManager.h" ///Model #import "RoomInfoModel.h" #import "UserInfoModel.h" #import "AttachMentModel.h" #import "MicroQueueModel.h" +#import "XPRoomRecommendModel.h" ///View #import "XPShareView.h" +#import "XPRoomRecommendView.h" ///VC #import "XPWebViewcontroller.h" #import "XPRoomOnLineViewController.h" +#import "XPRoomViewController.h" -@interface RoomHeaderView () -///返回按钮 -@property (nonatomic,strong) UIButton *backButton; +@interface RoomHeaderView () ///容器 @property (nonatomic,strong) UIStackView *nickStackView; /// @@ -61,6 +64,8 @@ ///设置 @property (nonatomic,strong) UIButton *settingButton; @property (nonatomic, weak) id hostDelegate; +///右侧推荐房间 +@property (nonatomic, strong) XPRoomRecommendView *recommendRoomView; @end @@ -85,23 +90,29 @@ [self showSharePanel]; } -- (void)settingButtonAction:(UIButton *)sender { - TTActionSheetConfig *exitRoom = [TTActionSheetConfig normalTitle:@"退出房间" clickAction:^{ - [self.hostDelegate exitRoom]; - }]; - - TTActionSheetConfig *miniRoom = [TTActionSheetConfig normalTitle:@"最小化房间" clickAction:^{ - [self.hostDelegate miniRoom]; - }]; - - TTActionSheetConfig *reportRoom = [TTActionSheetConfig normalTitle:@"举报房间" clickAction:^{ - XPWebViewController * webVC = [[XPWebViewController alloc] init]; - NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%ld&source=ROOM", URLWithType(kReportRoomURL),self.hostDelegate.getRoomInfo.uid]; - webVC.url = urlstr; - [[self.hostDelegate getCurrentNav] pushViewController:webVC animated:YES]; - }]; - - [TTPopup actionSheetWithItems:@[exitRoom, miniRoom, reportRoom]]; +- (void)settingButtonAction:(UIButton *)sender { + self.recommendRoomView.frame = CGRectMake(KScreenWidth, 0, 250, KScreenHeight); + FFPopup *popup = [FFPopup popupWithContentView:self.recommendRoomView]; + popup.showType = FFPopupShowType_SlideInFromRight; + popup.dismissType = FFPopupDismissType_SlideOutToRight; + popup.maskType = FFPopupMaskType_Dimmed; + popup.dimmedMaskAlpha = 0.0; + popup.shouldDismissOnBackgroundTouch = YES; + FFPopupHorizontalLayout horizontalLayout = FFPopupHorizontalLayout_Right; + FFPopupVerticalLayout verticalLayout = FFPopupVerticalLayout_Center; + [popup showWithLayout:FFPopupLayoutMake(horizontalLayout, verticalLayout) duration:0.0]; + popup.didFinishDismissingBlock = ^{ + [self.recommendRoomView removeFromSuperview]; + }; + popup.didFinishShowingBlock = ^{ + + }; + [Api reqeustRecommendRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + NSArray *array = [XPRoomRecommendModel modelsWithArray:data.data]; + self.recommendRoomView.roomList = array; + } + } roomId:[NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]]; } - (void)onlineTapRecognizer { @@ -110,7 +121,6 @@ } #pragma mark - Private Method - (void)initSubViews { - [self addSubview:self.backButton]; [self addSubview:self.nickStackView]; [self addSubview:self.collectButton]; [self addSubview:self.shareButton]; @@ -128,12 +138,6 @@ } - (void)initSubViewConstraints { - [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self).offset(14); - make.bottom.equalTo(self).offset(-14); - make.height.width.equalTo(@22); - }]; - // 设置 [self.settingButton mas_makeConstraints:^(MASConstraintMaker *make) { make.right.mas_equalTo(-15); @@ -155,7 +159,7 @@ [self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.mas_equalTo(self.settingButton); - make.left.mas_equalTo(self.backButton.mas_right).offset(10); + make.left.mas_equalTo(15); }]; [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { @@ -335,17 +339,34 @@ [TTPopup dismiss]; } -#pragma mark - Getters And Setters -- (UIButton *)backButton{ - if (!_backButton) { - _backButton = [[UIButton alloc] init]; - [_backButton setImage:[UIImage imageNamed:@"room_info_back"] forState:UIControlStateNormal]; - [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - [_backButton setEnlargeEdgeWithTop:15 right:15 bottom:15 left:15]; - } - return _backButton; +#pragma mark - XPRoomRecommendViewDelegate +- (void)xPRoomRecommendViewReport { + [FFPopup dismissPopupForView:self.recommendRoomView animated:NO]; + XPWebViewController * webVC = [[XPWebViewController alloc] init]; + NSString *urlstr = [NSString stringWithFormat:@"%@?reportUid=%ld&source=ROOM", URLWithType(kReportRoomURL),self.hostDelegate.getRoomInfo.uid]; + webVC.url = urlstr; + [[self.hostDelegate getCurrentNav] pushViewController:webVC animated:YES]; } +- (void)xPRoomRecommendViewMiniRoom { + [FFPopup dismissPopupForView:self.recommendRoomView animated:NO]; + [self.hostDelegate miniRoom]; +} + +- (void)xPRoomRecommendViewExitRoom { + [FFPopup dismissPopupForView:self.recommendRoomView animated:NO]; + [self.hostDelegate exitRoom]; +} + +- (void)xPRoomRecommendViewJumpToRoom:(NSString *)roomUid { + [FFPopup dismissPopupForView:self.recommendRoomView animated:NO]; + [self.hostDelegate exitRoom]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; + }); +} + +#pragma mark - Getters And Setters - (UIButton *)shareButton { if(!_shareButton){ _shareButton = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -462,4 +483,12 @@ return _idLabel; } +- (XPRoomRecommendView *)recommendRoomView { + if (!_recommendRoomView) { + _recommendRoomView = [[XPRoomRecommendView alloc] init]; + self.recommendRoomView.delegate = self; + } + return _recommendRoomView; +} + @end diff --git a/xplan-ios/Main/Room/View/RoomRecommend/Model/XPRoomRecommendModel.h b/xplan-ios/Main/Room/View/RoomRecommend/Model/XPRoomRecommendModel.h new file mode 100644 index 00000000..229625a3 --- /dev/null +++ b/xplan-ios/Main/Room/View/RoomRecommend/Model/XPRoomRecommendModel.h @@ -0,0 +1,32 @@ +// +// XPRoomRecommendModel.h +// xplan-ios +// +// Created by GreenLand on 2022/4/28. +// + +#import +#import "XPEnum.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomRecommendModel : NSObject + +@property (nonatomic, assign) NSInteger roomId; +@property (nonatomic, assign) NSInteger uid; +@property (nonatomic, assign) NSInteger isPermitRoom; +//@property (nonatomic, strong) NSArray *micUsers;//群成员列表 +@property (nonatomic, copy) NSString *title; +@property (nonatomic, assign) NSInteger onlineNum; +@property (nonatomic, assign) NSInteger micUserCount; +@property (nonatomic, copy) NSString *tagPict; +@property (nonatomic, copy) NSString *roomTag; +@property (nonatomic, copy) NSString *avatar; +@property (nonatomic , assign) GenderType gender; +@property (nonatomic, copy) NSString *infoUid; +@property (nonatomic, copy) NSString *nick; +@property (nonatomic, copy) NSString *roomPwd; + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/RoomRecommend/Model/XPRoomRecommendModel.m b/xplan-ios/Main/Room/View/RoomRecommend/Model/XPRoomRecommendModel.m new file mode 100644 index 00000000..50ffd834 --- /dev/null +++ b/xplan-ios/Main/Room/View/RoomRecommend/Model/XPRoomRecommendModel.m @@ -0,0 +1,12 @@ +// +// XPRoomRecommendModel.m +// xplan-ios +// +// Created by GreenLand on 2022/4/28. +// + +#import "XPRoomRecommendModel.h" + +@implementation XPRoomRecommendModel + +@end diff --git a/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.h b/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.h new file mode 100644 index 00000000..15d74ef5 --- /dev/null +++ b/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.h @@ -0,0 +1,19 @@ +// +// XPRoomInsideRecommendCell.h +// xplan-ios +// +// Created by GreenLand on 2022/4/28. +// + +#import +#import "XPRoomRecommendModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomInsideRecommendCell : UITableViewCell + +@property (nonatomic, strong) XPRoomRecommendModel *model; + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.m b/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.m new file mode 100644 index 00000000..47128dde --- /dev/null +++ b/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendCell.m @@ -0,0 +1,138 @@ +// +// XPRoomInsideRecommendCell.m +// xplan-ios +// +// Created by GreenLand on 2022/4/28. +// + +#import "XPRoomInsideRecommendCell.h" +#import "NetImageView.h" +///Third +#import +///Tool +#import "XPMacro.h" +#import "ThemeColor.h" + +@interface XPRoomInsideRecommendCell () + +///头像 +@property (nonatomic, strong) NetImageView *avatarImageView; +///显示名字 +@property (nonatomic,strong) UILabel *nickLabel; +///标签 +@property (nonatomic,strong) NetImageView *tagImageView; +///显示🔥 +@property (nonatomic,strong) UIImageView *hotImageView; +///显示在线人数 +@property (nonatomic,strong) UILabel *numberLabel; + +@end + +@implementation XPRoomInsideRecommendCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self addSubview:self.avatarImageView]; + [self addSubview:self.nickLabel]; + [self addSubview:self.tagImageView]; + [self addSubview:self.hotImageView]; + [self addSubview:self.numberLabel]; +} + +- (void)initSubViewConstraints { + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(12); + make.left.mas_equalTo(15); + make.width.height.mas_equalTo(72); + }]; + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.avatarImageView).mas_offset(12); + make.left.mas_equalTo(self.avatarImageView.mas_right).mas_offset(7); + make.height.mas_equalTo(14); + make.right.mas_equalTo(0); + }]; + [self.tagImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickLabel); + make.width.mas_equalTo(43); + make.height.mas_equalTo(18); + make.top.mas_equalTo(self.nickLabel.mas_bottom).mas_offset(12); + }]; + [self.hotImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.tagImageView.mas_right).mas_offset(12); + make.width.height.mas_equalTo(13); + make.centerY.mas_equalTo(self.tagImageView); + }]; + [self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.hotImageView.mas_right).mas_offset(3); + make.centerY.mas_equalTo(self.tagImageView); + make.right.mas_equalTo(0); + make.height.mas_equalTo(12); + }]; +} +#pragma mark - Getters And Setters +- (void)setModel:(XPRoomRecommendModel *)model { + _model = model; + self.avatarImageView.imageUrl = model.avatar; + self.nickLabel.text = model.title; + self.tagImageView.imageUrl = model.tagPict; + self.numberLabel.text = [NSString stringWithFormat:@"%ld", model.onlineNum]; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 8; + } + return _avatarImageView; +} + +- (NetImageView *)tagImageView { + if (!_tagImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _tagImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _tagImageView; +} + +- (UIImageView *)hotImageView { + if (!_hotImageView) { + _hotImageView = [[UIImageView alloc] init]; + _hotImageView.userInteractionEnabled = YES; + _hotImageView.image = [UIImage imageNamed:@"room_like_collect_room_hot"]; + } + return _hotImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont boldSystemFontOfSize:14]; + _nickLabel.textColor = [UIColor whiteColor]; + } + return _nickLabel; +} + +- (UILabel *)numberLabel { + if (!_numberLabel) { + _numberLabel = [[UILabel alloc] init]; + _numberLabel.font = [UIFont systemFontOfSize:12]; + _numberLabel.textColor = [UIColor whiteColor]; + } + return _numberLabel; +} + +@end diff --git a/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.h b/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.h new file mode 100644 index 00000000..4799e8ff --- /dev/null +++ b/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.h @@ -0,0 +1,16 @@ +// +// XPRoomInsideRecommendEmptyCell.h +// xplan-ios +// +// Created by GreenLand on 2022/4/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPRoomInsideRecommendEmptyCell : UITableViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.m b/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.m new file mode 100644 index 00000000..caf77506 --- /dev/null +++ b/xplan-ios/Main/Room/View/RoomRecommend/SubViews/XPRoomInsideRecommendEmptyCell.m @@ -0,0 +1,56 @@ +// +// XPRoomInsideRecommendEmptyCell.m +// xplan-ios +// +// Created by GreenLand on 2022/4/28. +// + +#import "XPRoomInsideRecommendEmptyCell.h" +///Third +#import +///Tool +#import "ThemeColor.h" +#import "UIImageConstant.h" + +@interface XPRoomInsideRecommendEmptyCell () +///空文本 +@property (nonatomic,strong) UILabel *emptyLabel; +@end + +@implementation XPRoomInsideRecommendEmptyCell + +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.emptyLabel]; +} + +- (void)initSubViewConstraints { + [self.emptyLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView); + make.centerY.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters +- (UILabel *)emptyLabel { + if (!_emptyLabel) { + _emptyLabel = [[UILabel alloc] init]; + _emptyLabel.text = @"努力寻找合适房间中~"; + _emptyLabel.font = [UIFont systemFontOfSize:14]; + _emptyLabel.textAlignment = NSTextAlignmentCenter; + _emptyLabel.textColor = [UIColor whiteColor]; + } + return _emptyLabel; +} + +@end diff --git a/xplan-ios/Main/Room/View/RoomRecommend/XPRoomRecommendView.h b/xplan-ios/Main/Room/View/RoomRecommend/XPRoomRecommendView.h new file mode 100644 index 00000000..77d629cf --- /dev/null +++ b/xplan-ios/Main/Room/View/RoomRecommend/XPRoomRecommendView.h @@ -0,0 +1,32 @@ +// +// XPRoomRecommendView.h +// xplan-ios +// +// Created by GreenLand on 2022/4/28. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@protocol XPRoomRecommendViewDelegate + +///举报房间 +- (void)xPRoomRecommendViewReport; +///最小化房间 +- (void)xPRoomRecommendViewMiniRoom; +///退出房间 +- (void)xPRoomRecommendViewExitRoom; +///跳转到房间 +- (void)xPRoomRecommendViewJumpToRoom:(NSString *)roomUid; + +@end + +@interface XPRoomRecommendView : UIView + +@property (nonatomic, strong) NSMutableArray *roomList; + +@property (nonatomic, weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Room/View/RoomRecommend/XPRoomRecommendView.m b/xplan-ios/Main/Room/View/RoomRecommend/XPRoomRecommendView.m new file mode 100644 index 00000000..377e447b --- /dev/null +++ b/xplan-ios/Main/Room/View/RoomRecommend/XPRoomRecommendView.m @@ -0,0 +1,275 @@ +// +// XPRoomRecommendView.m +// xplan-ios +// +// Created by GreenLand on 2022/4/28. +// + +#import "XPRoomRecommendView.h" +///Third +#import +///Tool +#import "XPMacro.h" +#import "ThemeColor.h" +///View +#import "XPRoomInsideRecommendCell.h" +#import "XPRoomInsideRecommendEmptyCell.h" + +@interface XPRoomRecommendView () + +///模糊背景 +@property (nonatomic, strong) UIToolbar *toolBar; +@property (nonatomic, strong) UITableView *tableView; + +@property (nonatomic, strong) UIStackView *reportStackView; +@property (nonatomic, strong) UIStackView *miniStackView; +@property (nonatomic, strong) UIStackView *exitStackView; +///举报 +@property (nonatomic,strong) UIButton *reportButton; +///最小化 +@property (nonatomic,strong) UIButton *miniButton; +///退出房间 +@property (nonatomic,strong) UIButton *exitButton; +///举报 +@property (nonatomic,strong) UILabel *reportLabel; +///最小化 +@property (nonatomic,strong) UILabel *miniLabel; +///退出房间 +@property (nonatomic,strong) UILabel *exitLabel; + + +@end + +@implementation XPRoomRecommendView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self setUpUI]; + [self setUpConstraints]; + } + return self; +} + +#pragma mark - lifeCycle +- (void)setUpUI { + [self addSubview:self.toolBar]; + [self addSubview:self.reportStackView]; + [self addSubview:self.miniStackView]; + [self addSubview:self.exitStackView]; + [self.reportStackView addArrangedSubview:self.reportButton]; + [self.reportStackView addArrangedSubview:self.reportLabel]; + [self.miniStackView addArrangedSubview:self.miniButton]; + [self.miniStackView addArrangedSubview:self.miniLabel]; + [self.exitStackView addArrangedSubview:self.exitButton]; + [self.exitStackView addArrangedSubview:self.exitLabel]; + [self addSubview:self.tableView]; +} + +- (void)setRoomList:(NSMutableArray *)roomList { + _roomList = roomList; + [self.tableView reloadData]; +} + +#pragma mark - Constraints +- (void)setUpConstraints { + [self.toolBar mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.bottom.mas_equalTo(self); + }]; + [self.reportStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kStatusBarHeight + 8); + make.left.mas_equalTo(15); + }]; + [self.miniStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kStatusBarHeight + 8); + make.left.mas_equalTo(self.reportStackView.mas_right).mas_offset(30); + }]; + [self.exitStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kStatusBarHeight + 8); + make.left.mas_equalTo(self.miniStackView.mas_right).mas_offset(30); + }]; + + [self.reportButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(54); + }]; + [self.miniButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(54); + }]; + [self.exitButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(54); + }]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(0); + make.top.mas_equalTo(self.miniStackView.mas_bottom).mas_offset(8); + }]; +} + +#pragma mark - UITableViewDelegate +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.roomList.count ? self.roomList.count : 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (self.roomList.count > 0) { + XPRoomInsideRecommendCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomInsideRecommendCell class])]; + XPRoomRecommendModel *model = self.roomList[indexPath.row]; + cell.model = model; + return cell; + } + XPRoomInsideRecommendEmptyCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomInsideRecommendEmptyCell class])]; + if (cell == nil) { + cell = [[XPRoomInsideRecommendEmptyCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomInsideRecommendEmptyCell class])]; + } + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (self.roomList.count > 0) { + XPRoomRecommendModel *model = self.roomList[indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRecommendViewJumpToRoom:)]) { + [self.delegate xPRoomRecommendViewJumpToRoom:[NSString stringWithFormat:@"%ld", model.uid]]; + } + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return self.roomList.count > 0 ? 84 : KScreenHeight - kStatusBarHeight -8 - 120; +} + +#pragma mark - atcion +- (void)reportButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRecommendViewReport)]) { + [self.delegate xPRoomRecommendViewReport]; + } +} + +- (void)miniButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRecommendViewMiniRoom)]) { + [self.delegate xPRoomRecommendViewMiniRoom]; + } +} + +- (void)exitButtonAction:(UIButton *)sender{ + if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRecommendViewExitRoom)]) { + [self.delegate xPRoomRecommendViewExitRoom]; + } +} + +#pragma mark - getter +- (UIToolbar *)toolBar { + if (!_toolBar) { + _toolBar = [[UIToolbar alloc] init]; + _toolBar.barStyle = UIBarStyleBlack; + _toolBar.translucent = YES; + } + return _toolBar; +} + +- (UIButton *)miniButton { + if(!_miniButton){ + _miniButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_miniButton setImage:[UIImage imageNamed:@"room_info_mini"] forState:UIControlStateNormal]; + [_miniButton addTarget:self action:@selector(miniButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_miniButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _miniButton.titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + } + return _miniButton; +} + +- (UIButton *)exitButton { + if (!_exitButton) { + _exitButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_exitButton setImage:[UIImage imageNamed:@"room_info_exit"] forState:UIControlStateNormal]; + [_exitButton addTarget:self action:@selector(exitButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _exitButton; +} + +- (UIButton *)reportButton { + if (!_reportButton) { + _reportButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_reportButton setImage:[UIImage imageNamed:@"room_info_report"] forState:UIControlStateNormal]; + [_reportButton addTarget:self action:@selector(reportButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _reportButton; +} + +- (UIStackView *)reportStackView { + if (!_reportStackView) { + _reportStackView = [[UIStackView alloc] init]; + _reportStackView.axis = UILayoutConstraintAxisVertical; + _reportStackView.distribution = UIStackViewDistributionFill; + _reportStackView.alignment = UIStackViewAlignmentCenter; + _reportStackView.spacing = 17; + } + return _reportStackView; +} +- (UIStackView *)miniStackView { + if (!_miniStackView) { + _miniStackView = [[UIStackView alloc] init]; + _miniStackView.axis = UILayoutConstraintAxisVertical; + _miniStackView.distribution = UIStackViewDistributionFill; + _miniStackView.alignment = UIStackViewAlignmentCenter; + _miniStackView.spacing = 17; + } + return _miniStackView; +} +- (UIStackView *)exitStackView { + if (!_exitStackView) { + _exitStackView = [[UIStackView alloc] init]; + _exitStackView.axis = UILayoutConstraintAxisVertical; + _exitStackView.distribution = UIStackViewDistributionFill; + _exitStackView.alignment = UIStackViewAlignmentCenter; + _exitStackView.spacing = 17; + } + return _exitStackView; +} + +- (UILabel *)reportLabel { + if (!_reportLabel) { + _reportLabel = [[UILabel alloc] init]; + _reportLabel.text = @"举报房间"; + _reportLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _reportLabel.textAlignment = NSTextAlignmentCenter; + _reportLabel.textColor = [UIColor whiteColor]; + } + return _reportLabel; +} + +- (UILabel *)miniLabel { + if (!_miniLabel) { + _miniLabel = [[UILabel alloc] init]; + _miniLabel.text = @"收起房间"; + _miniLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _miniLabel.textAlignment = NSTextAlignmentCenter; + _miniLabel.textColor = [UIColor whiteColor]; + } + return _miniLabel; +} + +- (UILabel *)exitLabel { + if (!_exitLabel) { + _exitLabel = [[UILabel alloc] init]; + _exitLabel.text = @"退出房间"; + _exitLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _exitLabel.textAlignment = NSTextAlignmentCenter; + _exitLabel.textColor = [UIColor whiteColor]; + } + return _exitLabel; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.showsVerticalScrollIndicator = NO; + [_tableView registerClass:[XPRoomInsideRecommendCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomInsideRecommendCell class])]; + [_tableView registerClass:[XPRoomInsideRecommendEmptyCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomInsideRecommendEmptyCell class])]; + _tableView.backgroundColor = [UIColor clearColor]; + } + return _tableView; +} + +@end