From a994594617c430140f90004dc619ca9bbc2b100b Mon Sep 17 00:00:00 2001 From: chenguilong <598604202@qq.com> Date: Thu, 17 Nov 2022 18:58:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E4=B8=AD=E5=BF=83=E6=94=B9?= =?UTF-8?q?=E9=80=A0-UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xplan-ios.xcodeproj/project.pbxproj | 32 +++ .../SessionListHead/Contents.json | 6 + .../Contents.json | 22 ++ .../session_list_head_activity@2x.png | Bin 0 -> 3651 bytes .../session_list_head_activity@3x.png | Bin 0 -> 5742 bytes .../Contents.json | 22 ++ .../session_list_head_mengxin@2x.png | Bin 0 -> 4320 bytes .../session_list_head_mengxin@3x.png | Bin 0 -> 6550 bytes .../Contents.json | 22 ++ .../session_list_head_office@2x.png | Bin 0 -> 3604 bytes .../session_list_head_office@3x.png | Bin 0 -> 5829 bytes .../Contents.json | 22 ++ .../session_list_head_subscribe@2x.png | Bin 0 -> 3907 bytes .../session_list_head_subscribe@3x.png | Bin 0 -> 6337 bytes .../SessionList/SessionListViewController.m | 18 +- .../XPSessionListHeadFriendCell.h | 16 ++ .../XPSessionListHeadFriendCell.m | 87 ++++++ .../XPSessionListHeadItem.h | 28 ++ .../XPSessionListHeadItem.m | 12 + .../XPSessionListHeadItemView.h | 20 ++ .../XPSessionListHeadItemView.m | 87 ++++++ .../XPSessionListHeadView.h | 20 ++ .../XPSessionListHeadView.m | 249 ++++++++++++++++++ 23 files changed, 661 insertions(+), 2 deletions(-) create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/Contents.json create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@2x.png create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@3x.png create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_mengxin.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@2x.png create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@3x.png create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_office.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_office.imageset/session_list_head_office@2x.png create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_office.imageset/session_list_head_office@3x.png create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_subscribe.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@2x.png create mode 100644 xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@3x.png create mode 100644 xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadFriendCell.h create mode 100644 xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadFriendCell.m create mode 100644 xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItem.h create mode 100644 xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItem.m create mode 100644 xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItemView.h create mode 100644 xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItemView.m create mode 100644 xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadView.h create mode 100644 xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadView.m diff --git a/xplan-ios.xcodeproj/project.pbxproj b/xplan-ios.xcodeproj/project.pbxproj index e16782b2..20e29a74 100644 --- a/xplan-ios.xcodeproj/project.pbxproj +++ b/xplan-ios.xcodeproj/project.pbxproj @@ -212,6 +212,7 @@ 9B86D8802817F4A300494FCD /* XPNobleSettingNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D87F2817F4A300494FCD /* XPNobleSettingNavView.m */; }; 9B86D88328192DC000494FCD /* XPRoomRankEntranceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D88228192DC000494FCD /* XPRoomRankEntranceView.m */; }; 9B86D886281942D200494FCD /* SocialMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D885281942D200494FCD /* SocialMicroView.m */; }; + 9B87B3CD2926473D00085110 /* XPSessionListHeadFriendCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B87B3CC2926473D00085110 /* XPSessionListHeadFriendCell.m */; }; 9B88E20C28C5EB8300D26FBA /* MessageContentRedPacketView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E20B28C5EB8300D26FBA /* MessageContentRedPacketView.m */; }; 9B88E20F28C6305400D26FBA /* XPRoomSearchRecordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E20E28C6305400D26FBA /* XPRoomSearchRecordViewController.m */; }; 9B88E21228C6365B00D26FBA /* XPHomeSearchRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E21128C6365B00D26FBA /* XPHomeSearchRecordCell.m */; }; @@ -294,6 +295,9 @@ 9BD63FAE277EE97A006EB744 /* XPReleaseRadioPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD63FAD277EE97A006EB744 /* XPReleaseRadioPresenter.m */; }; 9BD63FB4277EF1B3006EB744 /* XPReleaseRadioModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD63FB3277EF1B3006EB744 /* XPReleaseRadioModel.m */; }; 9BD6E435289A48E3007DCF42 /* XPNewUserRechargePresentTrasition.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD6E433289A48E3007DCF42 /* XPNewUserRechargePresentTrasition.m */; }; + 9BD798B129262434003E03E6 /* XPSessionListHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD798B029262434003E03E6 /* XPSessionListHeadView.m */; }; + 9BD798B4292632FE003E03E6 /* XPSessionListHeadItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD798B3292632FE003E03E6 /* XPSessionListHeadItemView.m */; }; + 9BD798B72926362F003E03E6 /* XPSessionListHeadItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD798B62926362F003E03E6 /* XPSessionListHeadItem.m */; }; 9BD8D4E328911E9900AE03FF /* XPMineCollectRoomListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8D4E228911E9900AE03FF /* XPMineCollectRoomListViewController.m */; }; 9BD8D4E628911F7700AE03FF /* XPMineCollectRoomListPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD8D4E528911F7700AE03FF /* XPMineCollectRoomListPresenter.m */; }; 9BD9A17927A0EC57004186FE /* XPMineVisitorPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BD9A17827A0EC57004186FE /* XPMineVisitorPresenter.m */; }; @@ -1641,6 +1645,8 @@ 9B86D88228192DC000494FCD /* XPRoomRankEntranceView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRankEntranceView.m; sourceTree = ""; }; 9B86D884281942D200494FCD /* SocialMicroView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SocialMicroView.h; sourceTree = ""; }; 9B86D885281942D200494FCD /* SocialMicroView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SocialMicroView.m; sourceTree = ""; }; + 9B87B3CB2926473D00085110 /* XPSessionListHeadFriendCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionListHeadFriendCell.h; sourceTree = ""; }; + 9B87B3CC2926473D00085110 /* XPSessionListHeadFriendCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListHeadFriendCell.m; sourceTree = ""; }; 9B88E20A28C5EB8300D26FBA /* MessageContentRedPacketView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentRedPacketView.h; sourceTree = ""; }; 9B88E20B28C5EB8300D26FBA /* MessageContentRedPacketView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentRedPacketView.m; sourceTree = ""; }; 9B88E20D28C6305400D26FBA /* XPRoomSearchRecordViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSearchRecordViewController.h; sourceTree = ""; }; @@ -1810,6 +1816,12 @@ 9BD63FB3277EF1B3006EB744 /* XPReleaseRadioModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPReleaseRadioModel.m; sourceTree = ""; }; 9BD6E433289A48E3007DCF42 /* XPNewUserRechargePresentTrasition.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNewUserRechargePresentTrasition.m; sourceTree = ""; }; 9BD6E434289A48E3007DCF42 /* XPNewUserRechargePresentTrasition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNewUserRechargePresentTrasition.h; sourceTree = ""; }; + 9BD798AF29262434003E03E6 /* XPSessionListHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionListHeadView.h; sourceTree = ""; }; + 9BD798B029262434003E03E6 /* XPSessionListHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListHeadView.m; sourceTree = ""; }; + 9BD798B2292632FE003E03E6 /* XPSessionListHeadItemView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionListHeadItemView.h; sourceTree = ""; }; + 9BD798B3292632FE003E03E6 /* XPSessionListHeadItemView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListHeadItemView.m; sourceTree = ""; }; + 9BD798B52926362F003E03E6 /* XPSessionListHeadItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPSessionListHeadItem.h; sourceTree = ""; }; + 9BD798B62926362F003E03E6 /* XPSessionListHeadItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPSessionListHeadItem.m; sourceTree = ""; }; 9BD8D4E128911E9900AE03FF /* XPMineCollectRoomListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCollectRoomListViewController.h; sourceTree = ""; }; 9BD8D4E228911E9900AE03FF /* XPMineCollectRoomListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineCollectRoomListViewController.m; sourceTree = ""; }; 9BD8D4E428911F7700AE03FF /* XPMineCollectRoomListPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCollectRoomListPresenter.h; sourceTree = ""; }; @@ -4220,6 +4232,7 @@ 18F404BC2760989300A6C548 /* View */ = { isa = PBXGroup; children = ( + 9BD798AE29262306003E03E6 /* SessionListHeadView */, E8A30BDB28534667003B4873 /* FindNew */, 18EE3FF72754B01D00A452BF /* NIMViews */, 18EE3FF52754AFD900A452BF /* SessionList */, @@ -5072,6 +5085,21 @@ path = Protocol; sourceTree = ""; }; + 9BD798AE29262306003E03E6 /* SessionListHeadView */ = { + isa = PBXGroup; + children = ( + 9BD798AF29262434003E03E6 /* XPSessionListHeadView.h */, + 9BD798B029262434003E03E6 /* XPSessionListHeadView.m */, + 9BD798B2292632FE003E03E6 /* XPSessionListHeadItemView.h */, + 9BD798B3292632FE003E03E6 /* XPSessionListHeadItemView.m */, + 9BD798B52926362F003E03E6 /* XPSessionListHeadItem.h */, + 9BD798B62926362F003E03E6 /* XPSessionListHeadItem.m */, + 9B87B3CB2926473D00085110 /* XPSessionListHeadFriendCell.h */, + 9B87B3CC2926473D00085110 /* XPSessionListHeadFriendCell.m */, + ); + path = SessionListHeadView; + sourceTree = ""; + }; 9BD9A17D27A0EFB1004186FE /* Visitor */ = { isa = PBXGroup; children = ( @@ -9472,6 +9500,7 @@ E8F9168B27EC940E00F10D8F /* XPHomeLittleGameTableViewCell.m in Sources */, E8DEC9A12764A5D20078CB70 /* XPRoomMoreItemModel.m in Sources */, E80EC81028ACD84000D133C5 /* QExtendBoardView.m in Sources */, + 9B87B3CD2926473D00085110 /* XPSessionListHeadFriendCell.m in Sources */, 9B86D88328192DC000494FCD /* XPRoomRankEntranceView.m in Sources */, 18F404B7276095D700A6C548 /* SessionChatLimitView.m in Sources */, E8788942273A55AD00BF1D57 /* XPGiftUsersView.m in Sources */, @@ -9949,6 +9978,7 @@ E824544B26F5BBB800BE8163 /* XPMineModifPayPwdViewController.m in Sources */, E81C1B2227705F950020D1E4 /* Api+ArrangeMic.m in Sources */, E800805A27FD34DE0055A8AB /* XPMineClanViewController.m in Sources */, + 9BD798B4292632FE003E03E6 /* XPSessionListHeadItemView.m in Sources */, E8ACEFF527C8EF0500F66D1A /* XPHomeHotRoomViewController.m in Sources */, E8E20BE828169BDC0033B688 /* XPMineLoginPasswordPresenter.m in Sources */, E81EF6DC279AB5CC00FF3EDE /* XPLittleGameRoomOpenView.m in Sources */, @@ -9975,6 +10005,7 @@ E880B3AF278BE1D800A83B0D /* Api+AcrossRoomPK.m in Sources */, E8B9842D28AB77F10022D026 /* XPMonentsPublishTopicView.m in Sources */, E88C72992828F3620047FB2B /* XPRoomMusicLibraryTableViewCell.m in Sources */, + 9BD798B129262434003E03E6 /* XPSessionListHeadView.m in Sources */, E8D34D4728080295009C4835 /* XPMineUserDataViewController.m in Sources */, E801275127E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m in Sources */, E8EEB90F26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m in Sources */, @@ -10163,6 +10194,7 @@ 9BAD41AC28C6EB13005E47B3 /* XPInRoomRecordPresenter.m in Sources */, E8AC721626F46B06007D6E91 /* XPMineSettingTableViewCell.m in Sources */, 18EE3FDF2750C1F700A452BF /* SessionListCell.m in Sources */, + 9BD798B72926362F003E03E6 /* XPSessionListHeadItem.m in Sources */, 9BB549622782EA1D0090CD26 /* NobleInfo.m in Sources */, E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */, E895018C282D0701007E459A /* XPMoentsTopicView.m in Sources */, diff --git a/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/Contents.json b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/Contents.json b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/Contents.json new file mode 100644 index 00000000..a6a4fbd2 --- /dev/null +++ b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_list_head_activity@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_list_head_activity@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@2x.png b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d16ad3930dc6e642b44af2e30962870038c4cd25 GIT binary patch literal 3651 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 WBJMhY`HUZ97NZ+?^@?>~1pOZ~>VdQX literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@3x.png b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_activity.imageset/session_list_head_activity@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..79ab600796fa9fbed8cf2af33b497fc1dba73d8f GIT binary patch literal 5742 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 literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_mengxin.imageset/Contents.json b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_mengxin.imageset/Contents.json new file mode 100644 index 00000000..a60ee414 --- /dev/null +++ b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_mengxin.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_list_head_mengxin@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_list_head_mengxin@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@2x.png b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_mengxin.imageset/session_list_head_mengxin@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..22893f163c97b3aa6f514c00a99077a6d42b228d GIT binary patch literal 4320 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 XU(}cT`bLO;x?(n$?JeG$qp<%6g&I#M literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_office.imageset/session_list_head_office@3x.png b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_office.imageset/session_list_head_office@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..ad7f9634e9e8908935f39ef9c892236c1d3a8458 GIT binary patch literal 5829 zcmV;$7CPyPP)phe^;gE~hWOlx_}y2*?OW00Rk`wp z{?|{R|5LH{PoDozpZ`&-`BS#^ivQVAp8r+5@Phc-UESV<{McRC;(z7kT-o4%8V z=~lh(PoMvOQSfrR=)0k>Ee9b=~>I@ectHj{Qgp``C8EBf$-i~#p{Iq*HpIh zfb8Le{Mdr|+JW=kf%M!}xAR-m<9pfafa~Fc_uE>`=3CO_ed6YN)$Ll$=UB(;T-V}+ z|JGBo^?l&yT-o4U)#F;u=6~noSHJFE+uwQ7?}7E)d)Vt;-QIiF?0VDge&^$S-RWQB z+t~Q~dCu|0_w!!g-N*Fy-}?Js!12KH^j_iIU*+1s_4B*u`d;ANwd(d@=h=ki=8@d- zy6X7B@AqA~^txR9Wz^f_z`{g&1ETDA7l`t`Ex^l!uT%J2NE?(bmL zHB`k_o(IcW5n=w((Q)q;-cI6u;uuf-1WKi@K?g^h3?^r(Drc1@tfxE zqx0!<=HQCk?{m%WljQA?@Z@^K`1bsz2mk;8TXa%RQvm)27ZD8jMH=he+onWBG^P9N z+Pb=;j%!g#J0&9c^6XYpC)?4^&ZKHn{p+ESf<{02`P{Fmq>_bRMm00{_VexQ*TliR zyQ-ybV)p9h6>Lp8;$&n*_ z^dFTYPsw`4Dgwu90@ROGgEf`Inml>bsBz=Qty?#|T&3dGOE%0A{TJnG&@q2Lhcpd8 z;1v|7f;5z+f`B!A`0z1f#w;#ZyKsYC{|JTApsZJ*vRI3k zE}hi4aDjgqXZAexD|Sx`j3Pl(EJm21g2q>>QQ#ke0N z&LF)~3DPT40ZLOrMN9orl8s7mZrV;U!cc;cOHf+{=>(xnf`)41#F~W*{XSL3DtqqO zFC++w1W7e+lnYSFP%%ME1uZIC>UY;neS;x>2UU8pNTtmhzK#jfD^Lw0)uKf+YUKQ_ zuJZtjzE2>Pf%2%_7-fQs=@qaHl%tw4qj}lis8#+6e%Z;DNRW$AW3lbt8KhZEP(!U* zGo$D)7c5Uc+ah9-&0mCx={|~H=~jViu{eZ=3Q|~8rW7ggyJaT~`<|qtSCa>(B}gji z6{sMu_+hGifm*Rwa^=W@1;yH~BD7TOm7$t5r%07wq4Esk2vt=6%7MIIxkG3pWP;kP zAQiZN>Q|op20@AmhS#%Cwb)Y0(J({FQLSFRqQX!5)yO8uno|?R7!9sxNO{FG$hJcX zuU4;Ev7$(!AI_`%p{{e~gsJp!Cl$wNdW59fv}sd?vOk#Zb<%;tR~g9bm7eXS8qY-- z8x5HRiM3!s^YFZ{pPMZFlURl;F-B9~6UdKL7E41hLKbVardm*|M(_{{96~|fZFHtg z&{5GVnicX2R>7c1t?3kvO;R@bCt*#X5ED}%MHa;~%p`84G=q*sDUcxA8_^X4uWVRAI63=I^hmer~f zoDEXaE7^8=ahGFMQZYhJwQOU`lqlhsogs$rG6TI&4a5=&k_yTM2r6JXuN2nC%JMQ} znLr`hp1yJn6sg7xmjlZs_yJhbt4*F)%QmiUS}@V~I-udi3M2@TN_eH9NR@U+4p14Z zptWlgtuLM1MFzL@Pw`oXlOeV34vUM>$I?*5VuGO3(pXLWAyEtn#v4aQue^I-VC6vG z+iPmftcim(6h{MxJ7lTAq_m;E*DUd(cRdRqLQ*k8wq4%bgJaYtsHrw=h_x$wvBdrh z)Lp(ONcHH=ix+Pmd064$?yx{bEKotsvd500X%c^@SD{1bQ=Plhcb?LneO!cw%A7$a zsGyi2WX_<5g0}K7X0JcNnnR?(o1UA{>(z-Hpi=64W8Y6MSX|FMg!F3b)~%hLT{$Xp z=dfSmBc!@Ch|vHhBzV8CW`dsI=V*XcgM#bXuRE!>HOtGwCy)>&sZ!tc-bcu#S(<7d z;QD4wjg8R{0V*y+KzUT)aw(P|mKg4=yZ8XY&oYl}f?A)_pMVJCcU z@uD|ak_s~K)KT8YqL1@pT$g6CSbRMLORi^0wGC=wCVd0>q6gHpM1pcOaEiWENKU)p zmEU&OeRYruvQ*i!wbED}yGx150EItpKZ;@P-AAuTCA?yS7K&86b&5Iiiw{|%?golp z`7gqAFZ$A~K9}UpU5*Bspp9^Mw%xni<+ZbvhcNWboht{@UX61XtaFDzMP*&Or4J#g zcxez+YmHef7N`z4QD?DaZeq!m<5K~OUbzH~SG4Q)B{@b76bBX)Bo&w-U}bBG5nqoy zOb|$dY9J3`EWt;Qb*~=ZJf4+x{H^B7x&$gHZ9VfY!!gPTHP!z8ow7$cig7F`g~w>h zU1sqZP${ezugz?~xVLYgKH!qQLa~TNDvkz2b@(u_I^@LW`K`|~{%BbG^6@+s;h{%% z=2G}T*mZ!qtPlNUjy{E86uy`qy|&GgqZglpeAbauY`);c9iklFA_3YUv>uzEZLeeWp4N+iaygG28 zMO4gRgv1hy(CgKSH=63+{ac30dl4eXp3v>PrdTU}?$vI{Q9&J|ikT33!IHfql{$rn z3cB}kyzpufbopW*U?E3+2EB(WB&f{5BGu8ZQJe55Ea}yQ2M(ySvb>+NM;5MqDws~Fwt6h{kMCCu~LG|F}{W~{|>>9jx=(MK`N=LMg_v)#0Jo3=$ z$>+IOpBi0Lx=!sjhj3@ctfQ?Xo3=$Q0%Am!} z>eZ{qZ4E`U=#`^d(jSWa1fjHlsDF7+SVb;@6o^pk%;%I|DYG<`rm|S#?ZpJ`9eMbh zdB2art^vXhw?LRisRDu62V!66zYprl)bB3DKSj{!Joe358YKX=n)odO@ zOGT`oewG0ii^je&WFpwXW1zADZuY4lK!FNa3W`|i|DXyi&npkjK~ahLdPpp> z2;CetRK~3U)j0R~0@nB1%`Pa)^-_K8^1)S=MOi4MUq@n-y7^A3MOD>sP^Zgl30O>HB8HBEV9+xeJ&L#OI82+ zRv=si1uSGRKvg6B#T_X;P9Ibet&NTC`!2Qo@KZ%u1eO!4Dqu;f&2G~GDv5=SkQFR- ztS2lSCO)^f-%!#}z^eONg%mmo1lC0~4Je~#tZJ$S+n(9zHn1Y4pS;j|;Ob{*S}}32 z0}B~MX|SoT5Ek5S53`c=#2R6Nt1_K#NH;Vz&@Wf%Dnu%X^~P9(rvg;ff_3iJ&>>|| zVr`6Ctk6-yt?X{FqJLW3@4oTJ>X1oASfJwL$m)~$ZNjpcz!f-5IAEZnXgO57BOzA6 z@=jrGGsXvQ-$SUpJ%cR{1+49l-Vl|-QdEc)VO=3A!t!r9yR6ae+fCR9d3($^oC<%S z2ufptYLh`#qp41dzyt_MQYkDGiW$p-3WrK#p^QqIcGpy=g>wmsVHvVjCRPy^B@tF{ zRH~?GtcreDk)ofV*si7Aj=us6#ofsuVI390Q48rSjfEVhJD*xrv|et~btfYo$mk$R zUCaEuX)Hou5tO%#YO2#>jGxMycQTS#+3D;!1Xf2fu&%3H8L9gnpwd{nxRd-;M;C~- zTR~;}3e$bSs%+%jbG=1%9aQo__+CS4tdH5Vm+AH_)oG$Sx<*W}swgU!q*60Hgr(c# zw1NVa!UC0jvG!gh9C=o*m%D&y^Z%rhY^806r6{M0_=4H`M6)RxD z?cNL$)sE$2j*Jx+VN^%uBE+~8MGK|<wIfoI7zSen$B_xkw+UAM?T%w( zvC@DH$`q1H#YkuH7j+babTV2Nmrdkip@?Qv2&^7nuWVzH%EhQLnG6~Y7JHb}(!`Ib zyp;hHumA>51etii}vQpsY`XM$RTs0?gCv*i^eq40gJ2Sn_aMU1`#a6Dk>0S7>gBu@YT{B?nQI0K(3oT5(`vVgjuR&sSslB80t!&y9QqhL1S8Q+S9KEQE@< zQvKqBG>4!f;av`=I()ga0SPpWl?PS_QS~@(uR*MIuu`ennX$6K^!*l45!Ti3&5hO? z4Af9m2Bz*`yEkoOv4Yu25ml;GV)Y$^jnJmT6xOq7fBxRtd@HP*xz+vcm+r7Yr8h#7 ziWOlcV?t^Ub2}T|ZZ*4xI@b4*c9QI`Cip&qzK?b8oGO(N8TFSLwC9njikdTrKeA9~ zWq-xG(Vf)HIG-ojCnht4Au3Xt9*3RaHVwu+GC=_g!D4-%8>@@#3sY#z0aYpz?L1Oc z=;8LjyPPhfl1y&ru1-0~Apf9>SfPx%r2$xlRN{3Or)Vl2s!PsmA&n)W>WGP`>;r}K z-Ams>;;O-WPE~y$GFUsd41?)Iami2@gE^sIe4g?z-e)s0oSjB;NwDu2Nu z^(z)k!{=jS&3s;$uU(*1pNbCy} zAt6{O?!51lRPei_fwK@SD^`S6&zc7R6c(tw#a&`CDxJc4!mHuzJ+=xKVTFxl7Iy^8 zayvT_a<`L^LPyhQpu@6W^F9U@f@NnALk;1kp+-Vg+rHAqDiR^Z2F+kE>WNBY0m`&H zpo|pyso-|ztHRka5!C1*{L!VvV)w}Ckxi`40V*s)qEd%?V6oc3Z9nC(@0EBPsQks9 z1S&WZBf;%d-eGsI`VT<{@zB4GZ#g_x$e?c{WR<~MgxGWf8a_DtCIF8v+j!GJ z3QS?~Ehj*QSYZ(cHEHnqy?DeVpP^|itU>#jbI~qX@D<;3@}@$(hS<~hS*(K&mF274 zA5;xrakqmix4#Bkk9mQG6!K9>EJEjls(Cd^0#u-x32Wexy^<>X7L>49!7{fTH9x?8 zMKW6%Ua<=KmJ`wmq|<22i24mlTx&s@Gug0aKZ; zP~6!CNZ{<1Oq9g|^=}kgHFfc7bndLU`!Wcse9v6j55k5%3*g< zEht%DR5~Iq{-X+F@#6B8Q;BZ%Wa|Qin2c6NQY~0hvOG~#T3#HF<(s|Ky?n$A$i-YX6~W_uH8H&yfF|X7%2g_S~5I$&dWDbp5Sw z`OlI1%#ZuCa{11X_{)Iz-I?{>nfBkB_}ZBH!g>Dl@BFN8|MBqn)Rg(pkonG#_t=*F zuW5Vq`o@d?p=tTQdHb+&{-kREo@f20Yx=l#_}7*D#Ebr-Y538R z`pl2|%a8iEb@$ts_uQEKwRHN*j`rP|`Mh}gyLbAwbo;Mx`N4Yj-kJWJW&6mC_THHL zwsiT$eEhI+{h?|6zKHz5i2bH)`NDhpym$P;iTKEV`NMnp#(n$7jQqZb{HSdE#*6;- z@A|cL`pl5}y?FQ4l>hMU_{x9%@8tgK;QY&)`^%L3w{`yW?f&lR{MNGky@dR>eEst3 z{pHa8;miBhtNFuz{_yDj>*f30u>HoK`_P^Hx`6t?eEPk5{_NoX>fHV7*#73#{o=>{ z-NpRl!~NE{{L!lW)1>>ykNdZI`n-7kJ?d;~| z<=@@i+|kg>%gMgDx2~+6oSbfLW@TkkPB|YF2>kr=^6~EO?&am*(7d>}o}O=SP&g`j zx&QzRy-7qtRA}Cvn)hGTRT#$)L8WP>rKas=d+)vX-h1Az8A=EUqT-e1O27p|S1*B- z>w*(mG6YkBav>;gP0h6ZC-gjLJ?DJCUkUv=Q-mm`yWMKINHA^BhLsIZN=o|ThP$tLxaZY_BH5|yvp%g z20)UN-#M$>mu|#7LBTg}}Sjbpb zm_M!G8QrjPP7IfK=r#lM$V7A>y^O@&kr6_bNmPp+U1Zo8k!v`1v20}((dFF{3*FfSz8bORnP%IEJ&_^a3 zp;~bUX!d0npOA5hAk3ja(y3VBgSuBhpjMg62ZRnrBxCl@OJD4gA=+2fN_7@MBtjdZ zRmdUvs#wU_nRltDmov`=3)EQJND49dSfpYVaU&onWB&ZSyu8aiaybn$r^a%3uf0NK zA_3i5g^~dR#)=hr85vi)dklJ)AQmGf(O^&@5W3M=5c)J?-3=v3vjR)h~o9qemC=v*we542; zULy;Q*rD4Dg#6IYyI8b`fR7Ys=rrG{v65jb=IhV_fuSP;AU_N=I_q48=z1)w%T|$T7u0s$>v`~rtOp%`-<(*z)ZD076~ zyng)wHBOf07wXUfV&nl3!C3qlj~y2~h0be*5DMKYRztbpU)vz^;DJ!{?p$H}K*+*{ zH(~S_Qmx2{$b(Lc6v$pbXfLgF387jM1bhHwVQ)QtB|;jJdC)$k86(#tq*5G!>~Z21 z$U;zm>@C*;NEM3?4zvoJ{agpsrcR;L$TAox=&wi_x^Ap=c{ah+K{li4R{?3##Ue(Y zW>B$Et0F}tf`PJpxVkrUo?ocE9=cbKMQSWN5D;gq>dgi?ibV_xgiee9_@(OPG?~5g zXRe>PeiXug9|?l7>Pg6*4i4r)j*iyG$ZDunkoBFNt@Wj;sj1(9mZYVn&5cFPnw682 zojnxw<g~k&Id710d*QEHFSCf)h(HC=g;q zC$}DImi>F!pWsUXRn~RvuMT7A1X*qbB8mkX&s69DA%?6~T*KdgH6Lwn`*l;TkvN!u zU+_EH@vYmmW!LUKYqz&l=U9w*Vj#p0ofroy%l&R8V5#5-B2f58p^81(h;TE;F*=a~ z#0q`A-;03|6gnXW$CaBt;(;L`_^>)PonT#one2BXzj1$$oM?D~dAVbIBh_O~y3u;9SfK1^Kd1rI4!e%S^%8rgo z%A@gkb))HH4Kh4J2P0oGL`-gYx}2+&7_-jXT2Oxob6J^KaHZWit?h47!Gt z(cM#ALmEowwP9DGDh~psYE1$(D;BFlb=Q$&#wx@WVlxnedm%zJgP!Dy0we27OH14R zK7naMD|HD8yK$S^rF=9FRkN4dki{C05WyJ1=t<7L7mDjt12E>z+gmPIM;&fdO`D*z z!n#;nmkWl1P-98Rh!M;yblO4y0g#gYUEN_&1<|Pgctyk412%D z=Syv*q~uV!Sl$qeJe=r-xFI{+U^qf2h}x#CeF_Zm{KmwiM0~rh2ksI|f<_rU{9J>H zG#WFDj5t=hW=v<-yDsX{>RygD8LVFVx*+=b$-q1NJm#adD5 z4hBGSquAA6R|IaP6Cuc`@|i|<9jo5Dnixxc`?9Q+PJsv?Gjcy=gRHwJ_|VUnt&)*i zhf738ziE3csAaR6eAmUw&F#e^se2ud@2!FXk?7Rd?TJOf$$CSDG_rK*Hok=jh_MP$ zoDqy<>28V1^=aH?|bPf4!+iFSKZ108R96mz#GRAs(J(nd*2r`aK#+DZQ zim>kpB795N(D9vWMUY?=KnBU?l??h)Q3?#yUU5`dtL|)c)!9(76!nMpu~HX{7!V0O z;M`zcL+GnciG=LIO6}eemJBSG8t+gufNU^*a0nt~v4U?#Fwo<~C?LknLPVerZYgiX zsTfPe8mi~}AG<1!jH5uD-5Ux8KM{{=&Nou|o-847n_99Y3_et2ff3CBdF+KK!3c(O zdo!+kfFVb(fQT<(iXpZsD|8LX;-S;2cM3AJ4}|n(LeBsMeLx`eBsYy9_G3Vfb%$1~ zkbDp%6avW85)$z)AHCd%Or#JX^x!}jb<0NrG1FdDUe(Y{m)SFd1j~|F_tY`CZ7FL-L+CaFc7L0JY2mvI@{R!{`48;8I=~{(qEZUp8XCOccJs9EfF|!XE zQIGEkSppCm?>W+kcOWR*r$T_~`x5ie#dq4DzyKk~BGt1Hdk8hJWrTd#hZBHAMX;_l_!jlu(+Gr`*Sb&f(Mu4yPu=)j zH~vdWKlv#y*0~oFLmv}-t{F~h2Hn+m)S|`g~#58gPi9(EUiK^^47<_*{LX^ z*H!PE#d1FT(cSajs9q85)D_wL$*VrR|Gn4Emn=FsTzAKP4@G^}E0T4s{{V+#KxE{% R>Qev!002ovPDHLkV1h`N@b~}# literal 0 HcmV?d00001 diff --git a/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@3x.png b/xplan-ios/Assets.xcassets/SessionMessage/SessionListHead/session_list_head_subscribe.imageset/session_list_head_subscribe@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f783bd6e2dc935c0efa5f595253aeac9a1e490ee GIT binary patch literal 6337 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 D?T!}( literal 0 HcmV?d00001 diff --git a/xplan-ios/Main/Message/View/SessionList/SessionListViewController.m b/xplan-ios/Main/Message/View/SessionList/SessionListViewController.m index 3f0244e1..2e6a9f44 100644 --- a/xplan-ios/Main/Message/View/SessionList/SessionListViewController.m +++ b/xplan-ios/Main/Message/View/SessionList/SessionListViewController.m @@ -21,6 +21,7 @@ #import "XPSessionFindNewViewController.h" #import "TTPopUp.h" #import "XPTeenagerHomeView.h" +#import "XPSessionListHeadView.h" NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; @@ -33,6 +34,7 @@ NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; @property (nonatomic,strong) UILabel *titleLabel; @property (nonatomic, strong) UIButton *allReadButton; +@property (nonatomic, strong) XPSessionListHeadView *headView; /** * 会话列表 */ @@ -108,9 +110,9 @@ NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; - (void)viewDidLoad { [super viewDidLoad]; - [self getUserInfo]; [self initViews]; [self initLayout]; + [self getUserInfo]; } - (void)getUserInfo { @@ -120,6 +122,7 @@ NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; UserInfoModel * userInfo = [UserInfoModel modelWithDictionary:data.data]; self.userInfo = userInfo; [self.sessionListView reloadData]; + [self.headView updateToolViewWithUserLevel:self.userInfo.userLevelVo.charmLevelSeq]; } } uid:uid]; } @@ -129,6 +132,7 @@ NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; [self.customNavigationBar addSubview:self.titleLabel]; [self.view addSubview:self.customNavigationBar]; [self.customNavigationBar addSubview:self.allReadButton]; + [self.view addSubview:self.headView]; } [self.view addSubview:self.sessionListView]; } @@ -143,12 +147,16 @@ NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; make.width.height.mas_equalTo(30); make.centerY.mas_equalTo(self.customNavigationBar); }]; + [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(0); + make.top.mas_equalTo(self.customNavigationBar.mas_bottom).mas_offset(8); + }]; } [self.sessionListView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.bottom.mas_equalTo(self.view); if (self.openType == SessionListOpenTypeDefault) { - make.top.mas_equalTo(self.customNavigationBar.mas_bottom); + make.top.mas_equalTo(self.headView.mas_bottom); } else { make.top.mas_equalTo(self.view); } @@ -448,4 +456,10 @@ NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; return _teenagerView; } +- (XPSessionListHeadView *)headView { + if (!_headView) { + _headView = [[XPSessionListHeadView alloc] init]; + } + return _headView; +} @end diff --git a/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadFriendCell.h b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadFriendCell.h new file mode 100644 index 00000000..a6d0a6ca --- /dev/null +++ b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadFriendCell.h @@ -0,0 +1,16 @@ +// +// XPSessionListHeadFriendCell.h +// xplan-ios +// +// Created by GreenLand on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionListHeadFriendCell : UICollectionViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadFriendCell.m b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadFriendCell.m new file mode 100644 index 00000000..d24477e8 --- /dev/null +++ b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadFriendCell.m @@ -0,0 +1,87 @@ +// +// XPSessionListHeadFriendCell.m +// xplan-ios +// +// Created by GreenLand on 2022/11/17. +// + +#import "XPSessionListHeadFriendCell.h" +#import +#import "ThemeColor.h" + +@interface XPSessionListHeadFriendCell() + +@property (nonatomic, strong) UILabel *nameLabel; +@property (nonatomic, strong) UIImageView *imageView; +@property (nonatomic, strong) UIView *dotView; + +@end + +@implementation XPSessionListHeadFriendCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initContraints]; + } + return self; +} + +- (void)initView { + [self addSubview:self.imageView]; + [self addSubview:self.nameLabel]; + [self addSubview:self.dotView]; +} + +- (void)initContraints { + [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerX.mas_equalTo(0); + make.width.height.mas_equalTo(50); + }]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.bottom.mas_equalTo(0); + make.top.mas_equalTo(self.imageView.mas_bottom).mas_offset(8); + make.bottom.mas_equalTo(0); + make.height.mas_equalTo(17); + }]; + [self.dotView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(self.imageView); + make.width.height.mas_equalTo(8); + }]; +} + +- (void)setTitle:(NSString *)title { + self.nameLabel.text = title; +} + +- (void)setImageName:(NSString *)imageName { + self.imageView.image = [UIImage imageNamed:imageName]; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _nameLabel.backgroundColor = [UIColor clearColor]; + _nameLabel.font = [UIFont systemFontOfSize:14]; + _nameLabel.textColor = ThemeColor.mainTextColor; + } + return _nameLabel; +} + +- (UIImageView *)imageView { + if (!_imageView) { + _imageView = [[UIImageView alloc] init]; + } + return _imageView; +} + +- (UIView *)dotView { + if (!_dotView) { + _dotView = [[UIView alloc] init]; + _dotView.layer.cornerRadius = 4; + _dotView.layer.masksToBounds = YES; + } + return _dotView; +} + +@end diff --git a/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItem.h b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItem.h new file mode 100644 index 00000000..59582e10 --- /dev/null +++ b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItem.h @@ -0,0 +1,28 @@ +// +// XPSessionListHeadItem.h +// xplan-ios +// +// Created by GreenLand on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, XPSessionListHeadItemType) { + XPSessionListHeadItemType_Office,//官方公告 + XPSessionListHeadItemType_Activity,//活动通知 + XPSessionListHeadItemType_Subscribe,//订阅提醒 + XPSessionListHeadItemType_MemgXin,//发现萌新 +}; + +@interface XPSessionListHeadItem : NSObject + +@property (nonatomic, copy) NSString *title; +@property (nonatomic, copy) NSString *imageName; +@property (nonatomic, assign) BOOL showRedDot; +@property (nonatomic, assign) XPSessionListHeadItemType type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItem.m b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItem.m new file mode 100644 index 00000000..ba2b7199 --- /dev/null +++ b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItem.m @@ -0,0 +1,12 @@ +// +// XPSessionListHeadItem.m +// xplan-ios +// +// Created by GreenLand on 2022/11/17. +// + +#import "XPSessionListHeadItem.h" + +@implementation XPSessionListHeadItem + +@end diff --git a/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItemView.h b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItemView.h new file mode 100644 index 00000000..f57f6d75 --- /dev/null +++ b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItemView.h @@ -0,0 +1,20 @@ +// +// XPSessionListHeadItemView.h +// xplan-ios +// +// Created by GreenLand on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionListHeadItemView : UIView + +@property (nonatomic, copy) NSString *imageName; +@property (nonatomic, copy) NSString *title; +@property (nonatomic, assign) BOOL showDot; + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItemView.m b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItemView.m new file mode 100644 index 00000000..56ed55ab --- /dev/null +++ b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadItemView.m @@ -0,0 +1,87 @@ +// +// XPSessionListHeadItemView.m +// xplan-ios +// +// Created by GreenLand on 2022/11/17. +// + +#import "XPSessionListHeadItemView.h" +#import +#import "ThemeColor.h" + +@interface XPSessionListHeadItemView() + +@property (nonatomic, strong) UILabel *nameLabel; +@property (nonatomic, strong) UIImageView *imageView; +@property (nonatomic, strong) UIView *dotView; + +@end + +@implementation XPSessionListHeadItemView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initView]; + [self initContraints]; + } + return self; +} + +- (void)initView { + [self addSubview:self.imageView]; + [self addSubview:self.nameLabel]; + [self addSubview:self.dotView]; +} + +- (void)initContraints { + [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.centerX.mas_equalTo(0); + make.width.height.mas_equalTo(50); + }]; + [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.bottom.mas_equalTo(0); + make.top.mas_equalTo(self.imageView.mas_bottom).mas_offset(8); + make.bottom.mas_equalTo(0); + make.height.mas_equalTo(17); + }]; + [self.dotView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(self.imageView); + make.width.height.mas_equalTo(8); + }]; +} + +- (void)setTitle:(NSString *)title { + self.nameLabel.text = title; +} + +- (void)setImageName:(NSString *)imageName { + self.imageView.image = [UIImage imageNamed:imageName]; +} + +- (UILabel *)nameLabel { + if (!_nameLabel) { + _nameLabel = [[UILabel alloc] initWithFrame:CGRectZero]; + _nameLabel.backgroundColor = [UIColor clearColor]; + _nameLabel.font = [UIFont systemFontOfSize:14]; + _nameLabel.textColor = ThemeColor.mainTextColor; + } + return _nameLabel; +} + +- (UIImageView *)imageView { + if (!_imageView) { + _imageView = [[UIImageView alloc] init]; + } + return _imageView; +} + +- (UIView *)dotView { + if (!_dotView) { + _dotView = [[UIView alloc] init]; + _dotView.layer.cornerRadius = 4; + _dotView.layer.masksToBounds = YES; + } + return _dotView; +} + +@end diff --git a/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadView.h b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadView.h new file mode 100644 index 00000000..1f6c49c2 --- /dev/null +++ b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadView.h @@ -0,0 +1,20 @@ +// +// XPSessionListHeadView.h +// xplan-ios +// +// Created by GreenLand on 2022/11/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPSessionListHeadView : UIView + +- (void)updateToolViewWithUserLevel:(NSInteger)level; + +@property (nonatomic, strong) NSArray *friendsArray; + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadView.m b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadView.m new file mode 100644 index 00000000..13b46992 --- /dev/null +++ b/xplan-ios/Main/Message/View/SessionListHeadView/XPSessionListHeadView.m @@ -0,0 +1,249 @@ +// +// XPSessionListHeadView.m +// xplan-ios +// +// Created by GreenLand on 2022/11/17. +// + +#import "XPSessionListHeadView.h" +#import +#import "UIImage+Utils.h" +#import "ThemeColor.h" +#import "ClientConfig.h" +#import "UserInfoModel.h" +#import "XPSessionListHeadItem.h" +#import "XPSessionListHeadItemView.h" +#import "XPSessionListHeadFriendCell.h" + +@interface XPSessionListHeadView() + +@property (nonatomic, strong) UIStackView *mainStackView; +///工具条 +@property (nonatomic, strong) UIStackView *toolStackView; +///好友容器 +@property (nonatomic, strong) UIView *friendContentView; +///好友派对view +@property (nonatomic, strong) UIImageView *partyView; +///好友派对中~ +@property (nonatomic, strong) UIButton *partyButton; +///好友列表 +@property (nonatomic, strong) UICollectionView *collectionView; + +///工具item集合 +@property (nonatomic, strong) NSMutableArray *funtionArray; + +@end + +@implementation XPSessionListHeadView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initItemData]; + [self initView]; + [self initContraints]; + } + return self; +} + +- (void)initItemData { + XPSessionListHeadItem *officeItem = [[XPSessionListHeadItem alloc] init]; + officeItem.title = @"官方公告"; + officeItem.imageName = @"session_list_head_office"; + officeItem.type = XPSessionListHeadItemType_Office; + + XPSessionListHeadItem *activityItem = [[XPSessionListHeadItem alloc] init]; + activityItem.title = @"活动通知"; + activityItem.imageName = @"session_list_head_activity"; + activityItem.type = XPSessionListHeadItemType_Activity; + + XPSessionListHeadItem *subscribeItem = [[XPSessionListHeadItem alloc] init]; + subscribeItem.title = @"订阅提醒"; + subscribeItem.imageName = @"session_list_head_subscribe"; + subscribeItem.type = XPSessionListHeadItemType_Subscribe; + + [self.funtionArray addObject:officeItem]; + [self.funtionArray addObject:activityItem]; + [self.funtionArray addObject:subscribeItem]; +} + +- (void)initView { + [self addSubview:self.mainStackView]; + [self.mainStackView addArrangedSubview:self.toolStackView]; + [self.mainStackView addArrangedSubview:self.friendContentView]; + for (XPSessionListHeadItem *item in self.funtionArray) { + XPSessionListHeadItemView *itemView = [[XPSessionListHeadItemView alloc] init]; + itemView.imageName = item.imageName; + itemView.title = item.title; + itemView.showDot = item.showRedDot; + itemView.tag = item.type; + [self.toolStackView addArrangedSubview:itemView]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapItem:)]; + [itemView addGestureRecognizer:tap]; + } + [self.friendContentView addSubview:self.partyView]; + [self.partyView addSubview:self.partyButton]; + [self.friendContentView addSubview:self.collectionView]; + +} + +- (void)initContraints { + [self.mainStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.partyView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(26); + make.top.mas_equalTo(12); + make.size.mas_equalTo(CGSizeMake(82, 16)); + }]; + [self.partyButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(0); + }]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(16); + make.right.mas_equalTo(-16); + make.height.mas_equalTo(82); + make.top.mas_equalTo(self.partyView.mas_bottom); + make.bottom.mas_equalTo(0); + }]; +} + +#pragma mark - UICollectionViewDelegate +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.friendsArray.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPSessionListHeadFriendCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPSessionListHeadFriendCell class]) forIndexPath:indexPath]; + + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + +} + +- (void)updateToolViewWithUserLevel:(NSInteger)level { + if( [ClientConfig shareConfig].configInfo.findNewbieCharmLevel <= level) { + XPSessionListHeadItem *mengxinItem = [[XPSessionListHeadItem alloc] init]; + mengxinItem.title = @"发现萌新"; + mengxinItem.imageName = @"session_list_head_mengxin"; + mengxinItem.type = XPSessionListHeadItemType_MemgXin; + [self.funtionArray addObject:mengxinItem]; + + XPSessionListHeadItemView *itemView = [[XPSessionListHeadItemView alloc] init]; + itemView.imageName = mengxinItem.imageName; + itemView.title = mengxinItem.title; + itemView.showDot = mengxinItem.showRedDot; + itemView.tag = mengxinItem.type; + [self.toolStackView addArrangedSubview:itemView]; + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapItem:)]; + [itemView addGestureRecognizer:tap]; + } +} + +- (void)tapItem:(UITapGestureRecognizer *)ges { + XPSessionListHeadItemView *view = (XPSessionListHeadItemView *)ges.view; + switch (view.tag) { + case XPSessionListHeadItemType_Office: + { + + } + break; + case XPSessionListHeadItemType_Activity: + { + + } + break; + case XPSessionListHeadItemType_Subscribe: + { + + } + break; + case XPSessionListHeadItemType_MemgXin: + { + + } + break; + default: + break; + } +} + +- (UIStackView *)mainStackView { + if (!_mainStackView) { + _mainStackView = [[UIStackView alloc] init]; + _mainStackView.axis = UILayoutConstraintAxisVertical; + _mainStackView.distribution = UIStackViewDistributionFill; + _mainStackView.alignment = UIStackViewAlignmentFill; + } + return _mainStackView; +} + +- (UIStackView *)toolStackView { + if (!_toolStackView) { + _toolStackView = [[UIStackView alloc] init]; + _toolStackView.axis = UILayoutConstraintAxisHorizontal; + _toolStackView.distribution = UIStackViewDistributionFillEqually; + _toolStackView.alignment = UIStackViewAlignmentCenter; + } + return _toolStackView; +} + +- (NSMutableArray *)funtionArray { + if (!_funtionArray) { + _funtionArray = [NSMutableArray array]; + } + return _funtionArray; +} +- (UIView *)friendContentView { + if (!_friendContentView) { + _friendContentView = [[UIView alloc] init]; +// _friendContentView.hidden = YES; + } + return _friendContentView; +} + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 18; + layout.itemSize = CGSizeMake(48, 68); + layout.sectionInset = UIEdgeInsetsMake(0, 16, 0, 16); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + [_collectionView registerClass:[XPSessionListHeadFriendCell class] forCellWithReuseIdentifier:NSStringFromClass([XPSessionListHeadFriendCell class])]; + _collectionView.delegate = self; + _collectionView.dataSource = self; + _collectionView.backgroundColor = UIColorRGBAlpha(0x5FCCE4, 0.12); + _collectionView.layer.cornerRadius = 8; + _collectionView.layer.masksToBounds = YES; + } + return _collectionView; +} + +- (UIImageView *)partyView { + if (!_partyView) { + _partyView = [[UIImageView alloc] init]; + _partyView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x70F2F2), UIColorFromRGB(0x4ECDFF)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(82, 16)]; + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 82, 16) byRoundingCorners:UIRectCornerTopRight | UIRectCornerTopLeft cornerRadii:CGSizeMake(6, 6)]; + CAShapeLayer *maskLayer = [CAShapeLayer layer]; + maskLayer.path = path.CGPath; + _partyView.layer.mask = maskLayer; + } + return _partyView; +} + +- (UIButton *)partyButton { + if (!_partyButton) { + _partyButton = [[UIButton alloc] init]; + [_partyButton setTitle:@"好友派对中~" forState:UIControlStateNormal]; + [_partyButton setImage:[UIImage imageNamed:@""] forState:UIControlStateNormal]; + _partyButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _partyButton.titleLabel.textColor = [ThemeColor mainTextColor]; + + } + return _partyButton; +} + +@end