From 3654a52e2ed2ffbd86b60eef5175d88c8002e89f Mon Sep 17 00:00:00 2001 From: fengshuo <963787902@qq.com> Date: Thu, 14 Apr 2022 22:02:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=AE=B6=E6=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xplan-ios.xcodeproj/project.pbxproj | 111 +++- .../Contents.json | 22 + .../mine_userinfo_header_shadow_bg@2x.png | Bin 0 -> 950 bytes .../mine_userinfo_header_shadow_bg@3x.png | Bin 0 -> 1908 bytes xplan-ios/Base/MVP/Model/UserInfoModel.h | 5 + xplan-ios/Base/MVP/Model/UserInfoModel.m | 3 +- .../Base/UI/UIImageView/UIImageConstant.m | 2 +- xplan-ios/Main/Mine/Api/Api+Mine.h | 5 + xplan-ios/Main/Mine/Api/Api+Mine.m | 8 + .../Model/UserInfo/UserGiftWallInfoModel.h | 27 + .../Model/UserInfo/UserGiftWallInfoModel.m | 12 + .../Mine/Presenter/XPMineUserDataPresenter.h | 21 + .../Mine/Presenter/XPMineUserDataPresenter.m | 33 + .../Mine/Presenter/XPMineUserInfoPresenter.h | 1 + .../Mine/Protocol/XPMineUserDataProtocol.h | 19 + .../MineInfo/XPMineDataClanTableViewCell.h | 24 + .../MineInfo/XPMineDataClanTableViewCell.m | 321 ++++++++++ .../XPMineDataGiftCollectionViewCell.h | 16 + .../XPMineDataGiftCollectionViewCell.m | 104 ++++ .../MineInfo/XPMineDataGiftTableViewCell.h | 23 + .../MineInfo/XPMineDataGiftTableViewCell.m | 219 +++++++ .../XPMineDataSkillCardTableViewCell.h | 24 + .../XPMineDataSkillCardTableViewCell.m | 135 ++++ .../XPMineDataSkillDataCollectionViewCell.h | 16 + .../XPMineDataSkillDataCollectionViewCell.m | 124 ++++ ...XPMineUserInfoGiftWallCollectionViewCell.h | 16 + ...XPMineUserInfoGiftWallCollectionViewCell.m | 14 + .../MineInfo/XPMineUserDataViewController.h | 18 + .../MineInfo/XPMineUserDataViewController.m | 219 +++++++ .../XPMineUserInfoGiftWallViewController.h | 16 + .../XPMineUserInfoGiftWallViewController.m | 31 + .../MineInfo/XPMineUserInfoViewController.h | 2 - .../MineInfo/XPMineUserInfoViewController.m | 139 +++-- .../Mine/View/SkillCard/Api/Api+SkillCard.h | 5 + .../Mine/View/SkillCard/Api/Api+SkillCard.m | 8 + .../Model/MineSkillCardListInfoModel.h | 24 + .../Model/MineSkillCardListInfoModel.m | 15 + .../MineInfo/XPMineUserInfoCustomNavView.m | 2 +- .../MineInfo/XPMineUserInfoHeaderView.m | 589 +++++++++++++----- .../Room/View/UserCard/Api/Api+UserCard.h | 4 - 40 files changed, 2159 insertions(+), 218 deletions(-) create mode 100644 xplan-ios/Assets.xcassets/Mine/mine_userinfo_header_shadow_bg.imageset/Contents.json create mode 100644 xplan-ios/Assets.xcassets/Mine/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@2x.png create mode 100644 xplan-ios/Assets.xcassets/Mine/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@3x.png create mode 100644 xplan-ios/Main/Mine/Model/UserInfo/UserGiftWallInfoModel.h create mode 100644 xplan-ios/Main/Mine/Model/UserInfo/UserGiftWallInfoModel.m create mode 100644 xplan-ios/Main/Mine/Presenter/XPMineUserDataPresenter.h create mode 100644 xplan-ios/Main/Mine/Presenter/XPMineUserDataPresenter.m create mode 100644 xplan-ios/Main/Mine/Protocol/XPMineUserDataProtocol.h create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataClanTableViewCell.h create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.h create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.m create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.h create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillCardTableViewCell.h create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillCardTableViewCell.m create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillDataCollectionViewCell.h create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillDataCollectionViewCell.m create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.h create mode 100644 xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m create mode 100644 xplan-ios/Main/Mine/View/MineInfo/XPMineUserDataViewController.h create mode 100644 xplan-ios/Main/Mine/View/MineInfo/XPMineUserDataViewController.m create mode 100644 xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoGiftWallViewController.h create mode 100644 xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoGiftWallViewController.m create mode 100644 xplan-ios/Main/Mine/View/SkillCard/Model/MineSkillCardListInfoModel.h create mode 100644 xplan-ios/Main/Mine/View/SkillCard/Model/MineSkillCardListInfoModel.m diff --git a/xplan-ios.xcodeproj/project.pbxproj b/xplan-ios.xcodeproj/project.pbxproj index 6717879e..ed516a60 100644 --- a/xplan-ios.xcodeproj/project.pbxproj +++ b/xplan-ios.xcodeproj/project.pbxproj @@ -273,6 +273,9 @@ E800808527FD8FC20055A8AB /* ClanMemberDetailInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E800808427FD8FC20055A8AB /* ClanMemberDetailInfoModel.m */; }; E800808827FDA5100055A8AB /* XPClanSectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E800808727FDA5100055A8AB /* XPClanSectionView.m */; }; E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = E80487642717DDD9008595F2 /* XPRoomMenuItem.m */; }; + E80A086227F2AC190027B30C /* RoomPKDetailInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E80A086127F2AC190027B30C /* RoomPKDetailInfoModel.m */; }; + E80A086527F318620027B30C /* XPRoomPKPlayingView.m in Sources */ = {isa = PBXBuildFile; fileRef = E80A086427F318620027B30C /* XPRoomPKPlayingView.m */; }; + E80B0712280D0A6700A79F63 /* FansInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E80B0711280D0A6700A79F63 /* FansInfoModel.m */; }; E80CBDE627D0C1CF001E1EC2 /* HomeMenuSourceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E80CBDE527D0C1CF001E1EC2 /* HomeMenuSourceModel.m */; }; E80CBDEA27D0C53F001E1EC2 /* XPWeakTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = E80CBDE927D0C53F001E1EC2 /* XPWeakTimer.m */; }; E80CBDED27D0D899001E1EC2 /* XPHomeLikeEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E80CBDEC27D0D899001E1EC2 /* XPHomeLikeEmptyTableViewCell.m */; }; @@ -508,7 +511,6 @@ E896EFAC2771AEFE00AD2CC1 /* XPMineFriendTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFAB2771AEFE00AD2CC1 /* XPMineFriendTableViewCell.m */; }; E896EFAF2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFAE2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m */; }; E896EFB22771C93B00AD2CC1 /* XPMineFriendNumberView.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFB12771C93B00AD2CC1 /* XPMineFriendNumberView.m */; }; - E896EFB62771D55500AD2CC1 /* FansInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFB52771D55500AD2CC1 /* FansInfoModel.m */; }; E899C68927508F4E00E189E5 /* XPUserCardInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68827508F4E00E189E5 /* XPUserCardInfoModel.m */; }; E899C68C275093B800E189E5 /* XPUserCardMicroItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68B275093B800E189E5 /* XPUserCardMicroItemModel.m */; }; E89BD7D4277D471100E31B19 /* XPRoomOnlineTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E89BD7D3277D471100E31B19 /* XPRoomOnlineTableViewCell.m */; }; @@ -633,6 +635,17 @@ E8CEA03D26EA3DE500644B44 /* LoginPasswordPresent.m in Sources */ = {isa = PBXBuildFile; fileRef = E8CEA03C26EA3DE500644B44 /* LoginPasswordPresent.m */; }; E8D34D41280714F3009C4835 /* GuildSearchSuperAdminModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D40280714F3009C4835 /* GuildSearchSuperAdminModel.m */; }; E8D34D4428071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4328071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.m */; }; + E8D34D4728080295009C4835 /* XPMineUserDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4628080295009C4835 /* XPMineUserDataViewController.m */; }; + E8D34D4A28080335009C4835 /* XPMineDataSkillCardTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4928080335009C4835 /* XPMineDataSkillCardTableViewCell.m */; }; + E8D34D4D28080351009C4835 /* XPMineDataClanTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4C28080351009C4835 /* XPMineDataClanTableViewCell.m */; }; + E8D34D5028080362009C4835 /* XPMineDataGiftTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D4F28080362009C4835 /* XPMineDataGiftTableViewCell.m */; }; + E8D34D532808037E009C4835 /* XPMineDataSkillDataCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D522808037E009C4835 /* XPMineDataSkillDataCollectionViewCell.m */; }; + E8D34D5628080393009C4835 /* XPMineDataGiftCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5528080393009C4835 /* XPMineDataGiftCollectionViewCell.m */; }; + E8D34D5A28082357009C4835 /* UserGiftWallInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5928082357009C4835 /* UserGiftWallInfoModel.m */; }; + E8D34D5D280826AD009C4835 /* MineSkillCardListInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5C280826AD009C4835 /* MineSkillCardListInfoModel.m */; }; + E8D34D6028082BA5009C4835 /* XPMineUserDataPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D5F28082BA5009C4835 /* XPMineUserDataPresenter.m */; }; + E8D34D6428084E40009C4835 /* XPMineUserInfoGiftWallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D6328084E40009C4835 /* XPMineUserInfoGiftWallViewController.m */; }; + E8D34D6728084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D34D6628084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m */; }; E8D4824A278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D48249278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m */; }; E8D4824D278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4824C278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.m */; }; E8D48250278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D4824F278D68BA003C1D08 /* XPAcrpssRoomPKPanelView.m */; }; @@ -1236,6 +1249,12 @@ E800808727FDA5100055A8AB /* XPClanSectionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPClanSectionView.m; sourceTree = ""; }; E80487632717DDD9008595F2 /* XPRoomMenuItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomMenuItem.h; sourceTree = ""; }; E80487642717DDD9008595F2 /* XPRoomMenuItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomMenuItem.m; sourceTree = ""; }; + E80A086027F2AC190027B30C /* RoomPKDetailInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomPKDetailInfoModel.h; sourceTree = ""; }; + E80A086127F2AC190027B30C /* RoomPKDetailInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomPKDetailInfoModel.m; sourceTree = ""; }; + E80A086327F318620027B30C /* XPRoomPKPlayingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPKPlayingView.h; sourceTree = ""; }; + E80A086427F318620027B30C /* XPRoomPKPlayingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomPKPlayingView.m; sourceTree = ""; }; + E80B0710280D0A6700A79F63 /* FansInfoModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FansInfoModel.h; sourceTree = ""; }; + E80B0711280D0A6700A79F63 /* FansInfoModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FansInfoModel.m; sourceTree = ""; }; E80CBDE427D0C1CF001E1EC2 /* HomeMenuSourceModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeMenuSourceModel.h; sourceTree = ""; }; E80CBDE527D0C1CF001E1EC2 /* HomeMenuSourceModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeMenuSourceModel.m; sourceTree = ""; }; E80CBDE827D0C53F001E1EC2 /* XPWeakTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPWeakTimer.h; sourceTree = ""; }; @@ -1711,7 +1730,6 @@ E896EFAE2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFriendEmptyTableViewCell.m; sourceTree = ""; }; E896EFB02771C93B00AD2CC1 /* XPMineFriendNumberView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFriendNumberView.h; sourceTree = ""; }; E896EFB12771C93B00AD2CC1 /* XPMineFriendNumberView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFriendNumberView.m; sourceTree = ""; }; - E896EFB42771D55500AD2CC1 /* FansInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FansInfoModel.h; sourceTree = ""; }; E896EFB52771D55500AD2CC1 /* FansInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FansInfoModel.m; sourceTree = ""; }; E899C68727508F4E00E189E5 /* XPUserCardInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardInfoModel.h; sourceTree = ""; }; E899C68827508F4E00E189E5 /* XPUserCardInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardInfoModel.m; sourceTree = ""; }; @@ -1960,6 +1978,29 @@ E8D34D40280714F3009C4835 /* GuildSearchSuperAdminModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GuildSearchSuperAdminModel.m; sourceTree = ""; }; E8D34D4228071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGuildSearchSuperAdminTableViewCell.h; sourceTree = ""; }; E8D34D4328071626009C4835 /* XPGuildSearchSuperAdminTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGuildSearchSuperAdminTableViewCell.m; sourceTree = ""; }; + E8D34D4528080295009C4835 /* XPMineUserDataViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserDataViewController.h; sourceTree = ""; }; + E8D34D4628080295009C4835 /* XPMineUserDataViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserDataViewController.m; sourceTree = ""; }; + E8D34D4828080335009C4835 /* XPMineDataSkillCardTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDataSkillCardTableViewCell.h; sourceTree = ""; }; + E8D34D4928080335009C4835 /* XPMineDataSkillCardTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDataSkillCardTableViewCell.m; sourceTree = ""; }; + E8D34D4B28080351009C4835 /* XPMineDataClanTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDataClanTableViewCell.h; sourceTree = ""; }; + E8D34D4C28080351009C4835 /* XPMineDataClanTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDataClanTableViewCell.m; sourceTree = ""; }; + E8D34D4E28080362009C4835 /* XPMineDataGiftTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDataGiftTableViewCell.h; sourceTree = ""; }; + E8D34D4F28080362009C4835 /* XPMineDataGiftTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDataGiftTableViewCell.m; sourceTree = ""; }; + E8D34D512808037E009C4835 /* XPMineDataSkillDataCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDataSkillDataCollectionViewCell.h; sourceTree = ""; }; + E8D34D522808037E009C4835 /* XPMineDataSkillDataCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDataSkillDataCollectionViewCell.m; sourceTree = ""; }; + E8D34D5428080393009C4835 /* XPMineDataGiftCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineDataGiftCollectionViewCell.h; sourceTree = ""; }; + E8D34D5528080393009C4835 /* XPMineDataGiftCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineDataGiftCollectionViewCell.m; sourceTree = ""; }; + E8D34D5828082357009C4835 /* UserGiftWallInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UserGiftWallInfoModel.h; sourceTree = ""; }; + E8D34D5928082357009C4835 /* UserGiftWallInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserGiftWallInfoModel.m; sourceTree = ""; }; + E8D34D5B280826AD009C4835 /* MineSkillCardListInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MineSkillCardListInfoModel.h; sourceTree = ""; }; + E8D34D5C280826AD009C4835 /* MineSkillCardListInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MineSkillCardListInfoModel.m; sourceTree = ""; }; + E8D34D5E28082BA5009C4835 /* XPMineUserDataPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserDataPresenter.h; sourceTree = ""; }; + E8D34D5F28082BA5009C4835 /* XPMineUserDataPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserDataPresenter.m; sourceTree = ""; }; + E8D34D6128082BD4009C4835 /* XPMineUserDataProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserDataProtocol.h; sourceTree = ""; }; + E8D34D6228084E40009C4835 /* XPMineUserInfoGiftWallViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftWallViewController.h; sourceTree = ""; }; + E8D34D6328084E40009C4835 /* XPMineUserInfoGiftWallViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoGiftWallViewController.m; sourceTree = ""; }; + E8D34D6528084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftWallCollectionViewCell.h; sourceTree = ""; }; + E8D34D6628084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoGiftWallCollectionViewCell.m; sourceTree = ""; }; E8D48248278D1F72003C1D08 /* XPAcrossRoomPKInviteView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKInviteView.h; sourceTree = ""; }; E8D48249278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAcrossRoomPKInviteView.m; sourceTree = ""; }; E8D4824B278D2CE4003C1D08 /* XPAcrossRoomPKInviteResultView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAcrossRoomPKInviteResultView.h; sourceTree = ""; }; @@ -3070,6 +3111,8 @@ 9B9EEF4D27C8755C006B0EB3 /* XPSkillCardResourcePropModel.m */, 9B9EEF5227C8AFEA006B0EB3 /* XPSkillCardRecordPropModel.h */, 9B9EEF5327C8AFEA006B0EB3 /* XPSkillCardRecordPropModel.m */, + E8D34D5B280826AD009C4835 /* MineSkillCardListInfoModel.h */, + E8D34D5C280826AD009C4835 /* MineSkillCardListInfoModel.m */, ); path = Model; sourceTree = ""; @@ -3188,6 +3231,7 @@ children = ( 9BA8A47627C60DF7000365A3 /* AVFoundation.framework */, 9BA8A47427C60D9F000365A3 /* AudioToolbox.framework */, + E896EFB52771D55500AD2CC1 /* FansInfoModel.m */, ); name = "Recovered References"; sourceTree = ""; @@ -3649,6 +3693,15 @@ path = Protocol; sourceTree = ""; }; + E80B070F280D0A6700A79F63 /* Friend */ = { + isa = PBXGroup; + children = ( + E80B0710280D0A6700A79F63 /* FansInfoModel.h */, + E80B0711280D0A6700A79F63 /* FansInfoModel.m */, + ); + path = Friend; + sourceTree = ""; + }; E80CBDE727D0C528001E1EC2 /* Timer */ = { isa = PBXGroup; children = ( @@ -4596,6 +4649,8 @@ children = ( E88B5CBF26FB407B00DA9178 /* XPMineUserInfoViewController.h */, E88B5CC026FB407B00DA9178 /* XPMineUserInfoViewController.m */, + E8D34D4528080295009C4835 /* XPMineUserDataViewController.h */, + E8D34D4628080295009C4835 /* XPMineUserDataViewController.m */, E8EEB90426FC5772007C6EBA /* XPMineUserInfoEditViewController.h */, E8EEB90526FC5772007C6EBA /* XPMineUserInfoEditViewController.m */, E8EEB91226FC7786007C6EBA /* XPMineUserInfoNickViewController.h */, @@ -4604,6 +4659,8 @@ E8EEB91626FC7B35007C6EBA /* XPMineUserInfoDesViewController.m */, E8B846BD26FD827900A777FE /* XPMineUserInfoAlbumViewController.h */, E8B846BE26FD827900A777FE /* XPMineUserInfoAlbumViewController.m */, + E8D34D6228084E40009C4835 /* XPMineUserInfoGiftWallViewController.h */, + E8D34D6328084E40009C4835 /* XPMineUserInfoGiftWallViewController.m */, ); path = MineInfo; sourceTree = ""; @@ -4663,15 +4720,6 @@ path = Friend; sourceTree = ""; }; - E896EFB32771D53500AD2CC1 /* Friend */ = { - isa = PBXGroup; - children = ( - E896EFB42771D55500AD2CC1 /* FansInfoModel.h */, - E896EFB52771D55500AD2CC1 /* FansInfoModel.m */, - ); - path = Friend; - sourceTree = ""; - }; E899C68D2750DA3C00E189E5 /* CustomMessage */ = { isa = PBXGroup; children = ( @@ -5444,6 +5492,15 @@ path = SubViews; sourceTree = ""; }; + E8D34D57280821F3009C4835 /* UserInfo */ = { + isa = PBXGroup; + children = ( + E8D34D5828082357009C4835 /* UserGiftWallInfoModel.h */, + E8D34D5928082357009C4835 /* UserGiftWallInfoModel.m */, + ); + path = UserInfo; + sourceTree = ""; + }; E8DBB6FA27B63CC300AA285D /* LittleGame */ = { isa = PBXGroup; children = ( @@ -5563,8 +5620,9 @@ E8E70D7026F2EB3800F03460 /* Model */ = { isa = PBXGroup; children = ( + E80B070F280D0A6700A79F63 /* Friend */, 9B1B729A28002249003FACE9 /* AnchorFansTeam */, - E896EFB32771D53500AD2CC1 /* Friend */, + E8D34D57280821F3009C4835 /* UserInfo */, 9BD9A18127A0F110004186FE /* Visitor */, E8B846D926FDE21900A777FE /* Recharge */, E8E70D9026F2F60C00F03460 /* XPMineItemModel.h */, @@ -5650,6 +5708,8 @@ E88B5CB726FB325200DA9178 /* XPMineTeenagerPwdPresenter.m */, E8EEB8FF26FC31B6007C6EBA /* XPMineUserInfoPresenter.h */, E8EEB90026FC31B6007C6EBA /* XPMineUserInfoPresenter.m */, + E8D34D5E28082BA5009C4835 /* XPMineUserDataPresenter.h */, + E8D34D5F28082BA5009C4835 /* XPMineUserDataPresenter.m */, E8EEB90D26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.h */, E8EEB90E26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m */, E8B846C326FDB41A00A777FE /* XPMineUserInfolbumPresenter.h */, @@ -5682,6 +5742,7 @@ E88B5CB126FB1CC100DA9178 /* XPMineTeenagerProtocol.h */, E88B5CB926FB327500DA9178 /* XPMineTeenagerPwdProtocol.h */, E8EEB90226FC31CE007C6EBA /* XPMineUserInfoProtocol.h */, + E8D34D6128082BD4009C4835 /* XPMineUserDataProtocol.h */, E8EEB91026FC6AD3007C6EBA /* XPMineUserInfoEditProtocol.h */, E8B846C626FDB44100A777FE /* XPMineUserInfoAlbumProtocol.h */, E8B846D726FDE16300A777FE /* XPMineRechargeProtocol.h */, @@ -5770,6 +5831,18 @@ E8EEB90826FC579A007C6EBA /* XPMineUserInfoEditTableViewCell.m */, E8B846C026FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.h */, E8B846C126FD82DC00A777FE /* XPMineUserInfoAlbumCollectionViewCell.m */, + E8D34D4828080335009C4835 /* XPMineDataSkillCardTableViewCell.h */, + E8D34D4928080335009C4835 /* XPMineDataSkillCardTableViewCell.m */, + E8D34D512808037E009C4835 /* XPMineDataSkillDataCollectionViewCell.h */, + E8D34D522808037E009C4835 /* XPMineDataSkillDataCollectionViewCell.m */, + E8D34D4B28080351009C4835 /* XPMineDataClanTableViewCell.h */, + E8D34D4C28080351009C4835 /* XPMineDataClanTableViewCell.m */, + E8D34D4E28080362009C4835 /* XPMineDataGiftTableViewCell.h */, + E8D34D4F28080362009C4835 /* XPMineDataGiftTableViewCell.m */, + E8D34D5428080393009C4835 /* XPMineDataGiftCollectionViewCell.h */, + E8D34D5528080393009C4835 /* XPMineDataGiftCollectionViewCell.m */, + E8D34D6528084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.h */, + E8D34D6628084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m */, ); path = MineInfo; sourceTree = ""; @@ -5950,9 +6023,11 @@ E8EEB90326FC31DC007C6EBA /* XPMineUserInfoProtocol.h in Sources */, E8232603274E4AA0003A3332 /* ThemeColor+UserCard.m in Sources */, E87A24F1272935920086A794 /* XPMessageRemoteExtModel.m in Sources */, + E8D34D5028080362009C4835 /* XPMineDataGiftTableViewCell.m in Sources */, 9B2A12E427846D7100CED41B /* NobleRechargeModel.m in Sources */, E88B5CBA26FB329C00DA9178 /* XPMineTeenagerPwdProtocol.h in Sources */, E83953222769F33B00CF2F24 /* XPRoomFunctionContainerView.m in Sources */, + E8D34D4A28080335009C4835 /* XPMineDataSkillCardTableViewCell.m in Sources */, E87C0AA027D9DE6400CB2241 /* RoomFaceSendInfoModel.m in Sources */, E88B5CB226FB1CFF00DA9178 /* XPMineTeenagerProtocol.h in Sources */, 9BD9A18027A0EFC7004186FE /* XPMineVisitorTableViewCell.m in Sources */, @@ -6029,6 +6104,7 @@ 9BEE3D0E27853BD000C83219 /* ThemeColor+NobleCenter.m in Sources */, 18E7B22626E8CDCF0064BC9B /* XplanFlutterBoostDelegate.m in Sources */, 9BD9A18427A0F128004186FE /* XPMineVisitorItemModel.m in Sources */, + E80B0712280D0A6700A79F63 /* FansInfoModel.m in Sources */, E8EEB8F326FC2050007C6EBA /* SDWaitingView.m in Sources */, E8F9168B27EC940E00F10D8F /* XPHomeLittleGameTableViewCell.m in Sources */, E8DEC9A12764A5D20078CB70 /* XPRoomMoreItemModel.m in Sources */, @@ -6104,6 +6180,7 @@ E8C1CD6627D88EF800376F83 /* XPRoomFaceViewController.m in Sources */, E80DE4102775C34E00BE5BCB /* XPFirstRechargeSuccessView.m in Sources */, E8412FB32779E285006E1101 /* Api+RoomSetting.m in Sources */, + E8D34D6028082BA5009C4835 /* XPMineUserDataPresenter.m in Sources */, 9B16A34B27E1915A00E13A98 /* XPTrumpetPresenter.m in Sources */, E8A6C29827CF448700AC7442 /* XPHomeCollectRoomTableViewCell.m in Sources */, E8C1672D2806BD8B00ECB15C /* XPGuildSuperAdminRoomCollectionViewCell.m in Sources */, @@ -6157,6 +6234,7 @@ 18A61BD7274F7F6900A09A54 /* NetImageConfig.m in Sources */, E800806E27FD6BF40055A8AB /* XPGuildPresenter.m in Sources */, E8C21501274B76F60079E6BF /* XPRoomAnimationHitView.m in Sources */, + E8D34D4D28080351009C4835 /* XPMineDataClanTableViewCell.m in Sources */, E8AC722426F47E5E007D6E91 /* XPMineFeedbackViewController.m in Sources */, E87E914E2796678D00A7B3F2 /* XPMineDressEmptyTableViewCell.m in Sources */, 9B7D804D27537950003DAC0C /* MessageCell.m in Sources */, @@ -6233,6 +6311,7 @@ 9B9EEF4E27C8755C006B0EB3 /* XPSkillCardResourcePropModel.m in Sources */, E88B5CB026FB1C6500DA9178 /* XPMineTeenagerPresenter.m in Sources */, E800163B28041F7B00D6D17A /* XPGuildSingleRoomIncomeTableViewCell.m in Sources */, + E8D34D6428084E40009C4835 /* XPMineUserInfoGiftWallViewController.m in Sources */, E899C68927508F4E00E189E5 /* XPUserCardInfoModel.m in Sources */, 9B6B3AAB278C2EA7005551EC /* XPRoomNobleLevelUpView.m in Sources */, E8834E3828000CB50029CCC1 /* GuildSearchUserInfoModel.m in Sources */, @@ -6320,6 +6399,7 @@ 9BCF585C279909D7008401A4 /* XPSkillCardEditPropCell.m in Sources */, E88863C6278EAFC3004BCFAB /* XPAcrossRoomPKResultView.m in Sources */, E8AC722C26F49580007D6E91 /* XPMineNotificaViewController.m in Sources */, + E8D34D5A28082357009C4835 /* UserGiftWallInfoModel.m in Sources */, 189DD52E26DE255300AB55B1 /* AppDelegate.m in Sources */, E83DB4842746661800D8CBD1 /* XPRoomGiftBroadcastView.m in Sources */, E84150C527747E0900A7F548 /* FirstRechargeRewardModel.m in Sources */, @@ -6367,6 +6447,8 @@ E824545126F5CE6E00BE8163 /* XPMineModifPayPwdPresenter.m in Sources */, E8A86DF727BA2F1C001C21F9 /* XPRoomLittleGameContainerView.m in Sources */, E880B3AF278BE1D800A83B0D /* Api+AcrossRoomPK.m in Sources */, + E8D34D4728080295009C4835 /* XPMineUserDataViewController.m in Sources */, + E801275127E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m in Sources */, E8EEB90F26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m in Sources */, E8AC723A26F49AAE007D6E91 /* XPMineNotifyStatus.m in Sources */, 18E7B33226F317A20064BC9B /* XPWebViewController.m in Sources */, @@ -6394,6 +6476,7 @@ E800806827FD3B520055A8AB /* XPClanMenuView.m in Sources */, E896EFAF2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m in Sources */, 18486213271EA9DA005FC5DC /* RtcManager.m in Sources */, + E8D34D5628080393009C4835 /* XPMineDataGiftCollectionViewCell.m in Sources */, 186A536926FC6F2E00D67B2C /* XPShareView.m in Sources */, 9BC5C91C277C8A7B007C8719 /* XPReleaseRadioViewController.m in Sources */, 186A534C26FC6ED900D67B2C /* TTAlertView.m in Sources */, @@ -6413,6 +6496,7 @@ 9BB5495C2782E79E0090CD26 /* NobleCenterModel.m in Sources */, 186A536B26FC6F2E00D67B2C /* XPShareItemCell.m in Sources */, E8B846C526FDB41A00A777FE /* XPMineUserInfolbumPresenter.m in Sources */, + E8D34D532808037E009C4835 /* XPMineDataSkillDataCollectionViewCell.m in Sources */, E83DB47D2746372300D8CBD1 /* XPRoomGiftBannerView.m in Sources */, 9BAA5FED277A1BBE007453F3 /* XPPrivacyViewController.m in Sources */, E872309326E8D31500B90D4F /* LoginVerifCodeView.m in Sources */, @@ -6421,7 +6505,6 @@ 186A534626FC6ED900D67B2C /* TTPopup.m in Sources */, E81EF6E0279AB7D900FF3EDE /* XPCreateLittleGameCollectionViewCell.m in Sources */, E8C167302806C01500ECB15C /* GuildSuperAdminInfoModel.m in Sources */, - E896EFB62771D55500AD2CC1 /* FansInfoModel.m in Sources */, E81C278C26EAFAF60031E639 /* Base64.m in Sources */, E8C1CD7027D894B800376F83 /* RoomFaceTitleItemModel.m in Sources */, 189DD73D26E21C3F00AB55B1 /* YYUtility+Device.m in Sources */, @@ -6521,6 +6604,7 @@ E833ED0D274FAD1C00A2463B /* XPKickUserModel.m in Sources */, E8788934273A53D700BF1D57 /* XPSendGiftView.m in Sources */, E896EF9C2771AE6B00AD2CC1 /* XPMineFansViewController.m in Sources */, + E8D34D5D280826AD009C4835 /* MineSkillCardListInfoModel.m in Sources */, E88B5CB826FB325200DA9178 /* XPMineTeenagerPwdPresenter.m in Sources */, 9B92A3472797EECD00AD168F /* XPMatchManageViewController.m in Sources */, E84B0E462727EF9D008818C6 /* XPRoomMessageParser.m in Sources */, @@ -6536,6 +6620,7 @@ E836DBD0279BF5150056F7DD /* XPLittleGameTableViewCell.m in Sources */, E89DA66727006443008483C1 /* RechargeStorage.m in Sources */, 189DD53F26DE255600AB55B1 /* main.m in Sources */, + E8D34D6728084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m in Sources */, E8A03DF927634A590098D9EA /* CandyTreeResultModel.m in Sources */, E872308D26E89DAA00B90D4F /* LoginInputView.m in Sources */, E851E46827FF2141002F3ACB /* XPGuildSetNamePresenter.m in Sources */, diff --git a/xplan-ios/Assets.xcassets/Mine/mine_userinfo_header_shadow_bg.imageset/Contents.json b/xplan-ios/Assets.xcassets/Mine/mine_userinfo_header_shadow_bg.imageset/Contents.json new file mode 100644 index 00000000..d2843ab4 --- /dev/null +++ b/xplan-ios/Assets.xcassets/Mine/mine_userinfo_header_shadow_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "mine_userinfo_header_shadow_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "mine_userinfo_header_shadow_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/xplan-ios/Assets.xcassets/Mine/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@2x.png b/xplan-ios/Assets.xcassets/Mine/mine_userinfo_header_shadow_bg.imageset/mine_userinfo_header_shadow_bg@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..de9a9286404c3af01868628c60404d85bac37ae4 GIT binary patch literal 950 zcmeAS@N?(olHy`uVBq!ia0y~yV0y>Ez^KB(3>0yXaM=!|Vgr0aT!A$0z)p6N4?xr9 zOM?7@>&w&gld|JVqGWu+0_}wvwG|A+-CeBBjn#QLR9N}BD+dQbE36k@eb=~peAOZCV`#8M(s~G z=)B%u_S>2pWJ;vo>$Pj{{yWDCG~`4LOh*gU=nAWQ_b%Rg`+kmsGuX(VO;8D8sGa;! zhs{$2D*&1Qeu84T6VR|dju7iVGr(O`3DpjiwQ+*T0zLH&q5K$ZL-M=&#|>*@4o<5J=Y5ts)AcsQSHN%p2LjN9&vlmJ zJ1gV1Z{Pa*{T_(BfzE;{nECf<%+s{?o}WL(&+S}4Hy)u68f+jh{C*kp^x2;qYh&x5 zLqh^)xc|H3m7B}{&V625&zBv3|M47VNI<|`4hr^lk9U3F1XT0*+n>a@zpTYm&Xih& zTkZ!1Ad*9N7T@3YyEt<9zjJJ`@PWymxU;v~W-hzdv7IOW?w7l^ZvW$$Cw2e$ExuoE zo^p2Q8OM{~D%bGpK+^C5`RW1%F!Ra(TO6y%2bcO}r3`qO9R+NdC1=P?__f|NPw9w# z@R24~h(*}RAI;hZN2ZEOBt2zmv$)x)SoVv>tzyVwGypRjiI>=vuT{BkV0nBlnzTZM5C}` z*;3mKMkXnz4yZAiP{S@E!X>AK97bl}kAC>kkKL|o-yiRNz0do7_j5n@^L$^NtMd+Z zwbg161gSeZ*zJKJGz)^@J1Qs;d40WhCjh#u6LmYl|7o3b^x6%m*B;&DyqD{DXn!b& z5x&o4orQsotA>LnylE|7b+Inl$&RXyz24mlL6}>Pc0W*${XHNz;>B)WcBcNO#`66S zyjBk#e^%uv3cb{@*MlSTf1lCe-uV?VnGc)MFjvmcgVW5S1BGOp8VQsvBHQHMA&blJ z2MWjE@zfHZN+1FWCX4&j15b1xU>WXG)FUK|iD&t6c>%fdK&O89_*OdGva}2R zWQE^0+56IPv7B>EVTeLh<;Ad83dL*NM9>0_h}1ZCfM-)!a*!vKD!@J$0U`l5k(Ad} zQlkh!#G@8e8CoUEs}WfZtA4BrBD^tGLG4~Kut7srlJa=Mx)*2f;IpN6==8Ns1*4%S z42$G_1Q+g38V2WqXOd}{8=8vQ)&x@nq1bu28CKheXC45>JkE^q7lv_aP+5B{KFrRP z-J;_2~}x2o1b#XX7&&CDS>!Ml?*b2R;i&LLCGYV1A5gn2oyCTV;2zPFxeq zOUh`z-Te(n1#n0r9}Wk%V0PA!P%D7E3w$^p^a%v2fC~cLtHWBo9dTAyTZ4)f&k3XT zzi9Wnu!W80W|fZh%9)?iyG*^Kqf+3y`0{Gsv|>43uehDXO%`C^om)u61kC#d*a9%R zMkDpR5CY%!TsG32ns-~~%5LOXW{QD@K2_TW)xRgR!W$xai=i3unGj!O9(lljz zFp1hS)8aIsl^~U})>g&Na(sF&PnmYX+7G3{VLeK6(x11l$%2~&**CJ5z+eoe}e5+C+p)Wrzoe1e4Rk?qx0QqQ+5Bdz?$u1tmT^rFy|ispKq zzG}hwKeho*5y0<0huPvbdqjD;;vPt2fg2q2^7A!_7;EDUJLfh=HsTpcLsE%DS|K@U zB@p;oBw7842cp(TGs-BG%jQcHOr+A6JeiSkp9LcQseXnL2wNo`^`_Z3WCA6@;r-2M zCJ}QoYxzWbVdPlcd-ssdN0|9*mM!g)K(Qp$slzPp13vulF1fNp0{!fXXS%1Rem{KI zP$-URon=X-QvE0}nEi~8Gez?0$cZxWISPlstykc`|8Yy3jlM5yC-XS+OG=E;8m{`enT literal 0 HcmV?d00001 diff --git a/xplan-ios/Base/MVP/Model/UserInfoModel.h b/xplan-ios/Base/MVP/Model/UserInfoModel.h index 9e48ffd9..2b173fa6 100644 --- a/xplan-ios/Base/MVP/Model/UserInfoModel.h +++ b/xplan-ios/Base/MVP/Model/UserInfoModel.h @@ -11,6 +11,7 @@ #import "UserInfoSkillVo.h" #import "UserVipInfoVo.h" #import "UserPhoto.h" +#import "UserGiftWallInfoModel.h" #import "XPEnum.h" NS_ASSUME_NONNULL_BEGIN @@ -109,6 +110,10 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - 小游戏 /// 小游戏状态 0 未加入游戏;1 加入游戏未准备;2 加入游戏已准备 3 游戏中 @property (nonatomic, assign) LittleGamePlayStatus gameStatus; +///用户的参加PK的类型 +@property (nonatomic, assign) GroupType groupType; +/// +@property (nonatomic,strong) NSArray *userGiftWall; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Base/MVP/Model/UserInfoModel.m b/xplan-ios/Base/MVP/Model/UserInfoModel.m index 5b08ff34..3dd6d1a6 100644 --- a/xplan-ios/Base/MVP/Model/UserInfoModel.m +++ b/xplan-ios/Base/MVP/Model/UserInfoModel.m @@ -11,7 +11,8 @@ + (NSDictionary *)objectClassInArray { return @{ - @"privatePhoto":UserPhoto.class + @"privatePhoto":UserPhoto.class, + @"userGiftWall":UserGiftWallInfoModel.class }; } diff --git a/xplan-ios/Base/UI/UIImageView/UIImageConstant.m b/xplan-ios/Base/UI/UIImageView/UIImageConstant.m index db2c8504..f3d00fca 100644 --- a/xplan-ios/Base/UI/UIImageView/UIImageConstant.m +++ b/xplan-ios/Base/UI/UIImageView/UIImageConstant.m @@ -19,7 +19,7 @@ NSString * const kImageTypeUserIcon = @"imageMogr2/auto-orient/thumbnail/150x150 NSString * const kImageTypeUserLibaryDetail = @"imageMogr2/auto-orient/thumbnail/300x300"; NSString * const kImageTypeCornerAvatar = @"imageMogr2/auto-orient/thumbnail/300x300/format/png"; /// 用户信息里面相册 -NSString * const kImageTypeUserInfoAlbum = @"imageMogr2/auto-orient/blur/10x20"; +NSString * const kImageTypeUserInfoAlbum = @"imageMogr2/auto-orient/blur/375x375"; /// 用户信息里面相册 NSString * const kImageTypeUserCardLevel = @"imageMogr2/thumbnail/x40"; diff --git a/xplan-ios/Main/Mine/Api/Api+Mine.h b/xplan-ios/Main/Mine/Api/Api+Mine.h index 364a2592..136738c9 100644 --- a/xplan-ios/Main/Mine/Api/Api+Mine.h +++ b/xplan-ios/Main/Mine/Api/Api+Mine.h @@ -194,6 +194,11 @@ NS_ASSUME_NONNULL_BEGIN /// @param pageSize 一页多少个 + (void)getAnchorFansTeamListCompletion:(HttpRequestHelperCompletion)completion pageNum:(NSString *)pageNum pageSize:(NSString *)pageSize; +/// 获取用户的礼物墙 +/// @param comletion 完成 +/// @param uid 用户的uid +/// @param orderType 类型2 ++ (void)getUserGiftWall:(HttpRequestHelperCompletion)comletion uid:(NSString *)uid orderType:(NSString *)orderType; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/Api/Api+Mine.m b/xplan-ios/Main/Mine/Api/Api+Mine.m index 3fe5c09f..408e538f 100644 --- a/xplan-ios/Main/Mine/Api/Api+Mine.m +++ b/xplan-ios/Main/Mine/Api/Api+Mine.m @@ -206,4 +206,12 @@ [self makeRequest:@"anchorFansTeam/getJoinFansTeamList" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, pageNum, pageSize, nil]; } +/// 获取用户的礼物墙 +/// @param comletion 完成 +/// @param uid 用户的uid +/// @param orderType 类型2 ++ (void)getUserGiftWall:(HttpRequestHelperCompletion)comletion uid:(NSString *)uid orderType:(NSString *)orderType { + [self makeRequest:@"giftwall/get" method:HttpRequestHelperMethodGET completion:comletion, __FUNCTION__, uid, orderType, nil]; +} + @end diff --git a/xplan-ios/Main/Mine/Model/UserInfo/UserGiftWallInfoModel.h b/xplan-ios/Main/Mine/Model/UserInfo/UserGiftWallInfoModel.h new file mode 100644 index 00000000..a313b885 --- /dev/null +++ b/xplan-ios/Main/Mine/Model/UserInfo/UserGiftWallInfoModel.h @@ -0,0 +1,27 @@ +// +// UserGiftWallInfoModel.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UserGiftWallInfoModel : NSObject +///目标用户的uid +@property (nonatomic,copy) NSString *uid; +///价格 +@property (nonatomic,assign) NSInteger giftPrice; +///id +@property (nonatomic,assign) NSInteger giftId; +///名称 +@property (nonatomic,copy) NSString *giftName; +///礼物 +@property (nonatomic,copy) NSString *picUrl; +///个数 +@property (nonatomic,assign) NSInteger reciveCount; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/Model/UserInfo/UserGiftWallInfoModel.m b/xplan-ios/Main/Mine/Model/UserInfo/UserGiftWallInfoModel.m new file mode 100644 index 00000000..23bef3d7 --- /dev/null +++ b/xplan-ios/Main/Mine/Model/UserInfo/UserGiftWallInfoModel.m @@ -0,0 +1,12 @@ +// +// UserGiftWallInfoModel.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "UserGiftWallInfoModel.h" + +@implementation UserGiftWallInfoModel + +@end diff --git a/xplan-ios/Main/Mine/Presenter/XPMineUserDataPresenter.h b/xplan-ios/Main/Mine/Presenter/XPMineUserDataPresenter.h new file mode 100644 index 00000000..4e760b3d --- /dev/null +++ b/xplan-ios/Main/Mine/Presenter/XPMineUserDataPresenter.h @@ -0,0 +1,21 @@ +// +// XPMineUserDataPresenter.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "BaseMvpPresenter.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserDataPresenter : BaseMvpPresenter + +/// 获取用户的技能卡列表 +- (void)getUserSkillCardList:(NSString *)uid; +/// 获取家族相亲的信息 +/// @param uid 用户的uid +- (void)getClanDetailInfo:(NSString *)uid; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/Presenter/XPMineUserDataPresenter.m b/xplan-ios/Main/Mine/Presenter/XPMineUserDataPresenter.m new file mode 100644 index 00000000..6355ab19 --- /dev/null +++ b/xplan-ios/Main/Mine/Presenter/XPMineUserDataPresenter.m @@ -0,0 +1,33 @@ +// +// XPMineUserDataPresenter.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "XPMineUserDataPresenter.h" +#import "Api+SkillCard.h" +#import "Api+Guild.h" +#import "ClanDetailInfoModel.h" +#import "MineSkillCardListInfoModel.h" +#import "XPMineUserDataProtocol.h" + +@implementation XPMineUserDataPresenter + +/// 获取用户的技能卡列表 +- (void)getUserSkillCardList:(NSString *)uid { + [Api getUserSkillCardLsit:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray * array = [MineSkillCardListInfoModel modelsWithArray:data.data]; + [[self getView] getUserSkillCardListSuccess:array]; + }] uid:uid]; +} + +/// 获取家族相亲的信息 +/// @param uid 用户的uid +- (void)getClanDetailInfo:(NSString *)uid { + [Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data]; + [[self getView] getClanDetailInfoSuccess:clanDetailInfo]; + }] uid:uid]; +} +@end diff --git a/xplan-ios/Main/Mine/Presenter/XPMineUserInfoPresenter.h b/xplan-ios/Main/Mine/Presenter/XPMineUserInfoPresenter.h index cd19c080..311a9302 100644 --- a/xplan-ios/Main/Mine/Presenter/XPMineUserInfoPresenter.h +++ b/xplan-ios/Main/Mine/Presenter/XPMineUserInfoPresenter.h @@ -27,6 +27,7 @@ NS_ASSUME_NONNULL_BEGIN ///@param targetUid 被访问用户的uid - (void)visitUser:(NSString *)targetUid; + @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/Protocol/XPMineUserDataProtocol.h b/xplan-ios/Main/Mine/Protocol/XPMineUserDataProtocol.h new file mode 100644 index 00000000..25768a1a --- /dev/null +++ b/xplan-ios/Main/Mine/Protocol/XPMineUserDataProtocol.h @@ -0,0 +1,19 @@ +// +// XPMineUserDataProtolcol.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class ClanDetailInfoModel; +@protocol XPMineUserDataProtocol +///获取用户的技能卡成功 +- (void)getUserSkillCardListSuccess:(NSArray *)list; +///获取家族信息成功 +- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataClanTableViewCell.h b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataClanTableViewCell.h new file mode 100644 index 00000000..f0f47db8 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataClanTableViewCell.h @@ -0,0 +1,24 @@ +// +// XPMineDataClanTableViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class ClanDetailInfoModel, XPMineDataClanTableViewCell; +@protocol XPMineDataClanTableViewCellDelegate +///点击了收起 +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickFold:(UIButton *)sender; +///点击了加入公会 +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickEnter:(ClanDetailInfoModel *)clanInfo; +@end +@interface XPMineDataClanTableViewCell : UITableViewCell +@property (nonatomic,strong) ClanDetailInfoModel *clanInfo; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m new file mode 100644 index 00000000..79778c02 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataClanTableViewCell.m @@ -0,0 +1,321 @@ +// +// XPMineDataClanTableViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "XPMineDataClanTableViewCell.h" +///Third +#import +///Tool +#import "ThemeColor.h" +#import "NetImageView.h" +///Model +#import "ClanDetailInfoModel.h" + +@interface XPMineDataClanTableViewCell () +///背景 +@property (nonatomic,strong) UIImageView *backImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///容器 +@property (nonatomic,strong) UIStackView *stackView; +///家族 +@property (nonatomic,strong) UIView * clanView; +///家族头像 +@property (nonatomic,strong) NetImageView *clanImageView; +///家族昵称 +@property (nonatomic,strong) UILabel *clanNickLabel; +///家族id +@property (nonatomic,strong) UILabel *clanIdLabel; +///展开 +@property (nonatomic,strong) UIButton *foldButton; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///公会 +@property (nonatomic,strong) UIView * hallView; +///公会头像 +@property (nonatomic,strong) NetImageView *hallImageView; +///公会昵称 +@property (nonatomic,strong) UILabel *hallNickLabel; +///加入 +@property (nonatomic,strong) UIButton *enterButton; +///是否折叠 +@property (nonatomic,assign) BOOL isfold; +@end + +@implementation XPMineDataClanTableViewCell + +- (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.isfold = YES; + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.backImageView]; + [self.backImageView addSubview:self.titleLabel]; + [self.backImageView addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.clanView]; + [self.stackView addArrangedSubview:self.hallView]; + + [self.clanView addSubview:self.clanImageView]; + [self.clanView addSubview:self.clanNickLabel]; + [self.clanView addSubview:self.clanIdLabel]; + [self.clanView addSubview:self.foldButton]; + [self.clanView addSubview:self.lineView]; + + [self.hallView addSubview:self.hallImageView]; + [self.hallView addSubview:self.hallNickLabel]; + [self.hallView addSubview:self.enterButton]; + +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(12); + make.top.mas_equalTo(self.backImageView).offset(10); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(10); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(5); + make.right.mas_equalTo(self.backImageView).offset(-10); + }]; + + [self.clanView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(68); + }]; + + + [self.clanImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(48, 48)); + make.left.centerY.mas_equalTo(self.clanView); + }]; + + [self.clanNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.clanImageView.mas_right).offset(10); + make.bottom.mas_equalTo(self.clanImageView.mas_centerY).offset(-2); + }]; + + [self.clanIdLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.clanNickLabel); + make.top.mas_equalTo(self.clanImageView.mas_centerY).offset(2); + }]; + + [self.foldButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(16, 8)); + make.right.mas_equalTo(self.clanView); + make.centerY.mas_equalTo(self.clanView); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.left.right.mas_equalTo(self.clanView); + make.height.mas_equalTo(1); + }]; + + [self.hallView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(60); + }]; + + [self.hallImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + make.centerY.mas_equalTo(self.hallView); + make.left.mas_equalTo(self.hallView); + }]; + + [self.hallNickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.hallView); + make.left.mas_equalTo(self.hallImageView.mas_right).offset(10); + make.right.mas_lessThanOrEqualTo(self.enterButton.mas_left).offset(-5); + }]; + + [self.enterButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(56, 20)); + make.centerY.mas_equalTo(self.hallView); + make.right.mas_equalTo(self.hallView); + }]; + +} + +#pragma mark - Event Response +- (void)enterButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataClanTableViewCell:didClickEnter:)]) { + [self.delegate xPMineDataClanTableViewCell:self didClickEnter:self.clanInfo]; + } +} + +- (void)foldButtonAction:(UIButton *)sender{ + self.hallView.hidden = !self.hallView.hidden; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataClanTableViewCell:didClickFold:)]) { + [self.delegate xPMineDataClanTableViewCell:self didClickFold:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setClanInfo:(ClanDetailInfoModel *)clanInfo { + _clanInfo = clanInfo; + if (_clanInfo) { + self.clanView.hidden = _clanInfo.clan.elderUid.length <= 0; + if (self.isfold) { + self.hallView.hidden = YES; + } else { + self.hallView.hidden = _clanInfo.hall.ownerUid.length <= 0; + } + self.clanImageView.imageUrl = _clanInfo.clan.avatar; + self.clanNickLabel.text = _clanInfo.clan.name; + self.clanIdLabel.text = [NSString stringWithFormat:@"家族ID:%@", _clanInfo.clan.cid]; + self.hallImageView.imageUrl = _clanInfo.hall.ownerAvatar; + self.hallNickLabel.text = _clanInfo.hall.hallName; + } +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.cornerRadius = 10; + _backImageView.backgroundColor =[ThemeColor appCellBackgroundColor]; + _backImageView.layer.shadowColor = UIColorFromRGB(0xE4E4E4).CGColor; + _backImageView.layer.shadowOffset = CGSizeMake(0, 2); + _backImageView.layer.shadowRadius = 8; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = @"家族·公会"; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [ThemeColor mainTextColor]; + } + return _titleLabel; +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIView *)clanView { + if (!_clanView) { + _clanView = [[UIView alloc] init]; + _clanView.backgroundColor = [UIColor clearColor]; + } + return _clanView; +} + +- (NetImageView *)clanImageView { + if (!_clanImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _clanImageView = [[NetImageView alloc] initWithConfig:config]; + _clanImageView.layer.masksToBounds = YES; + _clanImageView.layer.cornerRadius = 8; + } + return _clanImageView; +} + +- (UILabel *)clanNickLabel { + if (!_clanNickLabel) { + _clanNickLabel = [[UILabel alloc] init]; + _clanNickLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _clanNickLabel.textColor = [ThemeColor mainTextColor]; + } + return _clanNickLabel; +} + +- (UILabel *)clanIdLabel { + if (!_clanIdLabel) { + _clanIdLabel = [[UILabel alloc] init]; + _clanIdLabel.font = [UIFont systemFontOfSize:10]; + _clanIdLabel.textColor = [ThemeColor textThirdColor]; + } + return _clanIdLabel; +} + +- (UIButton *)foldButton { + if (!_foldButton) { + _foldButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_foldButton setImage:[UIImage imageNamed:@"icon_unattention"] forState:UIControlStateNormal]; + [_foldButton setImage:[UIImage imageNamed:@"icon_small_attention"] forState:UIControlStateSelected]; + [_foldButton addTarget:self action:@selector(foldButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _foldButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [UIColor clearColor]; + } + return _lineView; +} + +- (UIView *)hallView { + if (!_hallView) { + _hallView = [[UIView alloc] init]; + _hallView.backgroundColor = [UIColor clearColor]; + _hallView.hidden = YES; + } + return _hallView; +} + +- (NetImageView *)hallImageView { + if (!_hallImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _hallImageView = [[NetImageView alloc] initWithConfig:config]; + _hallImageView.layer.masksToBounds = YES; + _hallImageView.layer.cornerRadius = 8; + } + return _hallImageView; +} + +- (UILabel *)hallNickLabel { + if (!_hallNickLabel) { + _hallNickLabel = [[UILabel alloc] init]; + _hallNickLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _hallNickLabel.textColor = [ThemeColor mainTextColor]; + } + return _hallNickLabel; +} + +- (UIButton *)enterButton { + if (!_enterButton) { + _enterButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_enterButton setTitle:@"申请加入" forState:UIControlStateNormal]; + [_enterButton setTitleColor:UIColorFromRGB(0xFFC000) forState:UIControlStateNormal]; + _enterButton.titleLabel.font = [UIFont systemFontOfSize:10]; + _enterButton.backgroundColor = UIColorRGBAlpha(0xFFC000, 0.2); + _enterButton.layer.masksToBounds = YES; + _enterButton.layer.cornerRadius = 10; + [_enterButton addTarget:self action:@selector(enterButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _enterButton; +} + + +@end diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.h b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.h new file mode 100644 index 00000000..1e134d71 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// XPMineDataGiftCollectionViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class UserGiftWallInfoModel; +@interface XPMineDataGiftCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) UserGiftWallInfoModel *giftInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.m b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.m new file mode 100644 index 00000000..efce1629 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftCollectionViewCell.m @@ -0,0 +1,104 @@ +// +// XPMineDataGiftCollectionViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "XPMineDataGiftCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor.h" +#import "NetImageView.h" +///Model +#import "UserGiftWallInfoModel.h" + +@interface XPMineDataGiftCollectionViewCell () +///礼物头像 +@property (nonatomic,strong) NetImageView *giftImageView; +///礼物个数 +@property (nonatomic,strong) UILabel *giftNumberLabel; +///礼物背景 +@property (nonatomic,strong) UIView * giftBackView; +@end + +@implementation XPMineDataGiftCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method + +- (void)initSubViews { + [self.contentView addSubview:self.giftBackView]; + [self.contentView addSubview:self.giftImageView]; + [self.contentView addSubview:self.giftNumberLabel]; +} + +- (void)initSubViewConstraints { + [self.giftBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(56, 56)); + make.top.mas_equalTo(self.contentView); + make.centerX.mas_equalTo(self.contentView); + }]; + + [self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + make.center.mas_equalTo(self.giftBackView); + }]; + + [self.giftNumberLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.contentView); + make.top.mas_equalTo(self.giftBackView.mas_bottom).offset(5); + }]; +} + +#pragma mark - Getters And Setters +- (void)setGiftInfo:(UserGiftWallInfoModel *)giftInfo { + _giftInfo = giftInfo; + if (_giftInfo) { + self.giftImageView.imageUrl = _giftInfo.picUrl; + self.giftNumberLabel.text = [NSString stringWithFormat:@"x%ld", _giftInfo.reciveCount]; + } +} + +- (NetImageView *)giftImageView { + if (!_giftImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _giftImageView = [[NetImageView alloc] initWithConfig:config]; + _giftImageView.layer.masksToBounds = YES; + _giftImageView.layer.cornerRadius = 40/2; + } + return _giftImageView; +} + +- (UIView *)giftBackView { + if (!_giftBackView) { + _giftBackView = [[UIView alloc] init]; + _giftBackView.backgroundColor = UIColorFromRGB(0xF4F4FA); + _giftBackView.layer.masksToBounds = YES; + _giftBackView.layer.cornerRadius = 56/2; + } + return _giftBackView; +} + +- (UILabel *)giftNumberLabel { + if (!_giftNumberLabel) { + _giftNumberLabel = [[UILabel alloc] init]; + _giftNumberLabel.font = [UIFont systemFontOfSize:10]; + _giftNumberLabel.textColor = [ThemeColor mainTextColor]; + } + return _giftNumberLabel; +} + + +@end diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.h b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.h new file mode 100644 index 00000000..6ed00752 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.h @@ -0,0 +1,23 @@ +// +// XPMineDataGiftTableViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineDataGiftTableViewCell; +@protocol XPMineDataGiftTableViewCellDelegate + +- (void)xPMineDataGiftTableViewCell:(XPMineDataGiftTableViewCell *)view didClickMore:(UIButton *)sender; + +@end +@interface XPMineDataGiftTableViewCell : UITableViewCell +@property (nonatomic,strong) NSArray *datasource; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m new file mode 100644 index 00000000..ff700e3e --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataGiftTableViewCell.m @@ -0,0 +1,219 @@ +// +// XPMineDataGiftTableViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "XPMineDataGiftTableViewCell.h" +///Third +#import +///Tool +#import "XPMacro.h" +#import "ThemeColor.h" +#import "UIImageConstant.h" +#import "UIButton+EnlargeTouchArea.h" +///View +#import "XPMineDataGiftCollectionViewCell.h" + +@interface XPMineDataGiftTableViewCell () +///背景 +@property (nonatomic,strong) UIImageView * backImageView; +///显示更多 +@property (nonatomic,strong) UIButton *arrowButton; +///空的 +@property (nonatomic,strong) UIView * emptyView; +///显示空的文本 +@property (nonatomic,strong) UILabel *emptyLabel; +///空的 +@property (nonatomic,strong) UIImageView *emptyImageView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +@end + +@implementation XPMineDataGiftTableViewCell + +- (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.backImageView]; + + [self.backImageView addSubview:self.titleLabel]; + [self.backImageView addSubview:self.arrowButton]; + [self.backImageView addSubview:self.emptyView]; + [self.backImageView addSubview:self.collectionView]; + + [self.emptyView addSubview:self.emptyImageView]; + [self.emptyView addSubview:self.emptyLabel]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(12); + make.top.mas_equalTo(self.backImageView).offset(12); + }]; + + [self.arrowButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(13, 22)); + make.centerY.mas_equalTo(self.titleLabel); + make.right.mas_equalTo(self.backImageView).offset(-15); + }]; + + [self.emptyView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(12); + make.bottom.mas_equalTo(self.backImageView); + }]; + + [self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(50, 50)); + make.centerX.mas_equalTo(self.emptyView); + make.top.mas_equalTo(self.emptyView).offset(15); + }]; + + [self.emptyLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.emptyImageView); + make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(5); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(self.backImageView); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(12); + }]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasource.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPMineDataGiftCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineDataGiftCollectionViewCell class]) forIndexPath:indexPath]; + cell.giftInfo = [self.datasource objectAtIndex:indexPath.row]; + return cell; +} + +#pragma mark - Event Response +- (void)arrowButtonAction:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataGiftTableViewCell:didClickMore:)]) { + [self.delegate xPMineDataGiftTableViewCell:self didClickMore:sender]; + } +} + +#pragma mark - Getters And Setters +- (void)setDatasource:(NSArray *)datasource { + _datasource = datasource; + if (_datasource.count > 0) { + if (self.datasource.count > 16) { + NSArray * arrray = [self.datasource subarrayWithRange:NSMakeRange(0, 16)]; + _datasource = arrray; + } + + self.emptyView.hidden = YES; + self.collectionView.hidden = NO; + } else { + self.emptyView.hidden = NO; + self.collectionView.hidden = YES; + } + [self.collectionView reloadData]; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.cornerRadius = 10; + _backImageView.backgroundColor =[ThemeColor appCellBackgroundColor]; + _backImageView.layer.shadowColor = UIColorFromRGB(0xE4E4E4).CGColor; + _backImageView.layer.shadowOpacity = 1; + _backImageView.layer.shadowOffset = CGSizeMake(0, 2); + _backImageView.layer.shadowRadius = 8; + } + return _backImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = @"礼物墙"; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [ThemeColor mainTextColor]; + } + return _titleLabel; +} + +- (UIButton *)arrowButton { + if (!_arrowButton) { + _arrowButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_arrowButton setImage:[UIImage imageNamed:@"common_right_arrow"] forState:UIControlStateNormal]; + [_arrowButton setImage:[UIImage imageNamed:@"common_right_arrow"] forState:UIControlStateSelected]; + [_arrowButton addTarget:self action:@selector(arrowButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_arrowButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; + } + return _arrowButton; +} + +- (UIView *)emptyView { + if (!_emptyView) { + _emptyView = [[UIView alloc] init]; + _emptyView.backgroundColor = [UIColor clearColor]; + } + return _emptyView; +} + +- (UIImageView *)emptyImageView { + if (!_emptyImageView) { + _emptyImageView = [[UIImageView alloc] init]; + _emptyImageView.userInteractionEnabled = YES; + _emptyImageView.contentMode = UIViewContentModeScaleAspectFit; + _emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder]; + } + return _emptyImageView; +} + +- (UILabel *)emptyLabel { + if (!_emptyLabel) { + _emptyLabel = [[UILabel alloc] init]; + _emptyLabel.text = @"还没收到礼物"; + _emptyLabel.font = [UIFont systemFontOfSize:13]; + _emptyLabel.textColor = [ThemeColor secondTextColor]; + } + return _emptyLabel; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.itemSize = CGSizeMake(56, 56 + 20); + layout.minimumInteritemSpacing = (KScreenWidth - 56 * 4 - 15 * 2 - 10 * 2) / 3.0; + layout.minimumLineSpacing = 10; + layout.sectionInset = UIEdgeInsetsMake(0, 10, 0, 10); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.scrollEnabled = NO; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPMineDataGiftCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineDataGiftCollectionViewCell class])]; + + } + return _collectionView; +} + +@end diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillCardTableViewCell.h b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillCardTableViewCell.h new file mode 100644 index 00000000..5e568bca --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillCardTableViewCell.h @@ -0,0 +1,24 @@ +// +// XPMineDataSkillCardTableViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineDataSkillCardTableViewCell, MineSkillCardListInfoModel; +@protocol XPMineDataSkillCardTableViewCellDelegate + +- (void)xPMineDataSkillCardTableViewCell:(XPMineDataSkillCardTableViewCell *)view didSelectItem:(MineSkillCardListInfoModel *)skillInfo; + +@end + +@interface XPMineDataSkillCardTableViewCell : UITableViewCell +@property (nonatomic,strong) NSArray *datasourece; +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillCardTableViewCell.m b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillCardTableViewCell.m new file mode 100644 index 00000000..64ea4765 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillCardTableViewCell.m @@ -0,0 +1,135 @@ +// +// XPMineDataSkillCardTableViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "XPMineDataSkillCardTableViewCell.h" +///Third +#import +///Tool +#import "ThemeColor.h" +///View +#import "XPMineDataSkillDataCollectionViewCell.h" + +@interface XPMineDataSkillCardTableViewCell () +///背景 +@property (nonatomic,strong) UIImageView * backImageView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +@end + +@implementation XPMineDataSkillCardTableViewCell + +- (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.backImageView]; + + [self.backImageView addSubview:self.titleLabel]; + [self.backImageView addSubview:self.collectionView]; +} + +- (void)initSubViewConstraints { + [self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.contentView).inset(15); + make.top.mas_equalTo(self.contentView); + make.bottom.mas_equalTo(self.contentView).offset(-15); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.backImageView).offset(12); + make.top.mas_equalTo(self.backImageView).offset(12); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(12); + make.height.mas_equalTo(47); + make.right.mas_equalTo(self.backImageView).offset(-6); + }]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.datasourece.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + XPMineDataSkillDataCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineDataSkillDataCollectionViewCell class]) forIndexPath:indexPath]; + cell.skillInfo = [self.datasourece objectAtIndex:indexPath.row]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.datasourece.count > 0) { + MineSkillCardListInfoModel * skillInfo = [self.datasourece objectAtIndex:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataSkillCardTableViewCell:didSelectItem:)]) { + [self.delegate xPMineDataSkillCardTableViewCell:self didSelectItem:skillInfo]; + } + } +} + +#pragma mark - Getters And Setters +- (void)setDatasourece:(NSArray *)datasourece { + _datasourece = datasourece; + [self.collectionView reloadData]; +} + +- (UIImageView *)backImageView { + if (!_backImageView) { + _backImageView = [[UIImageView alloc] init]; + _backImageView.userInteractionEnabled = YES; + _backImageView.layer.cornerRadius = 10; + _backImageView.backgroundColor =[ThemeColor appCellBackgroundColor]; + _backImageView.layer.shadowColor = UIColorFromRGB(0xE4E4E4).CGColor; + _backImageView.layer.shadowOpacity = 1; + _backImageView.layer.shadowOffset = CGSizeMake(0, 2); + _backImageView.layer.shadowRadius = 8; + } + return _backImageView; +} + + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.text = @"技能卡"; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _titleLabel.textColor = [ThemeColor mainTextColor]; + } + return _titleLabel; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.itemSize = CGSizeMake(142, 47); + layout.minimumLineSpacing = 10; + layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + [_collectionView registerClass:[XPMineDataSkillDataCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineDataSkillDataCollectionViewCell class])]; + + } + return _collectionView; +} + + +@end diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillDataCollectionViewCell.h b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillDataCollectionViewCell.h new file mode 100644 index 00000000..aef7a67c --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillDataCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// XPMineDataSkillDataCollectionViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MineSkillCardListInfoModel; +@interface XPMineDataSkillDataCollectionViewCell : UICollectionViewCell +@property (nonatomic,strong) MineSkillCardListInfoModel *skillInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillDataCollectionViewCell.m b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillDataCollectionViewCell.m new file mode 100644 index 00000000..325277bf --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineDataSkillDataCollectionViewCell.m @@ -0,0 +1,124 @@ +// +// XPMineDataSkillDataCollectionViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "XPMineDataSkillDataCollectionViewCell.h" +///Third +#import +///Tool +#import "ThemeColor.h" +#import "NetImageView.h" +///Model +#import "MineSkillCardListInfoModel.h" + +@interface XPMineDataSkillDataCollectionViewCell () + +///背景 +@property (nonatomic,strong) UIView * backView; +///显示图片 +@property (nonatomic,strong) NetImageView *logoImageView; +///标题 +@property (nonatomic,strong) UILabel *titleLabel; +///技能卡 +@property (nonatomic,strong) UILabel *skillLabel; + +@end + +@implementation XPMineDataSkillDataCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + self.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.backView]; + [self.backView addSubview:self.logoImageView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.skillLabel]; +} + +- (void)initSubViewConstraints { + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; + + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(self.backView).inset(8); + make.left.mas_equalTo(self.backView).offset(4); + make.height.mas_equalTo(self.logoImageView.mas_width); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.logoImageView.mas_centerY).offset(-2); + make.left.mas_equalTo(self.logoImageView.mas_right).offset(4); + make.right.mas_lessThanOrEqualTo(self.backView); + }]; + + [self.skillLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.titleLabel); + make.top.mas_equalTo(self.logoImageView.mas_centerY).offset(2); + }]; +} + +#pragma mark - Getters And Setters +- (void)setSkillInfo:(MineSkillCardListInfoModel *)skillInfo { + _skillInfo = skillInfo; + if (_skillInfo) { + self.logoImageView.imageUrl = _skillInfo.icon; + NSString * title = [_skillInfo.propVals componentsJoinedByString:@"/"]; + self.skillLabel.text = title; + self.titleLabel.text = _skillInfo.name; + } +} + +- (NetImageView *)logoImageView { + if (!_logoImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _logoImageView = [[NetImageView alloc] initWithConfig:config]; + } + return _logoImageView; +} + +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = UIColorFromRGB(0xFEF5E8); + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 8; + } + return _backView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _titleLabel.textColor = [ThemeColor mainTextColor]; + } + return _titleLabel; +} + +- (UILabel *)skillLabel { + if (!_skillLabel) { + _skillLabel = [[UILabel alloc] init]; + _skillLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightMedium]; + _skillLabel.textColor = [ThemeColor mainTextColor]; + } + return _skillLabel; +} + + + +@end diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.h b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.h new file mode 100644 index 00000000..020102af --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// XPMineUserInfoGiftWallCollectionViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfoGiftWallCollectionViewCell : UICollectionViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m new file mode 100644 index 00000000..132f4d02 --- /dev/null +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoGiftWallCollectionViewCell.m @@ -0,0 +1,14 @@ +// +// XPMineUserInfoGiftWallCollectionViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "XPMineUserInfoGiftWallCollectionViewCell.h" +///Third +#import + +@implementation XPMineUserInfoGiftWallCollectionViewCell + +@end diff --git a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserDataViewController.h b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserDataViewController.h new file mode 100644 index 00000000..97193a97 --- /dev/null +++ b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserDataViewController.h @@ -0,0 +1,18 @@ +// +// XPMineUserDataViewController.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "MvpViewController.h" +#import +NS_ASSUME_NONNULL_BEGIN +@class UserInfoModel; +@interface XPMineUserDataViewController : MvpViewController +@property (nonatomic,copy) NSString *userUid; +///用户信息 +@property (nonatomic,strong) UserInfoModel *userInfo; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserDataViewController.m b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserDataViewController.m new file mode 100644 index 00000000..f32edaa9 --- /dev/null +++ b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserDataViewController.m @@ -0,0 +1,219 @@ +// +// XPMineUserDataViewController.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "XPMineUserDataViewController.h" +///Third +#import +///View +#import "XPMineDataSkillCardTableViewCell.h" +#import "XPMineDataClanTableViewCell.h" +#import "XPMineDataGiftTableViewCell.h" +///Model +#import "ClanDetailInfoModel.h" +#import "UserInfoModel.h" +///P +#import "XPMineUserDataPresenter.h" +#import "XPMineUserDataProtocol.h" +///View +#import "XPSkillCardViewController.h" +@interface XPMineUserDataViewController () +///列表 +@property (nonatomic,strong) UITableView *tableView; +///家族信息 +@property (nonatomic,strong) ClanDetailInfoModel *clanDetailInfo; +///技能卡 +@property (nonatomic,strong) NSArray *skillArray; +///是否折叠 +@property (nonatomic,assign) BOOL isFold; +@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); +@end + +@implementation XPMineUserDataViewController + +- (BOOL)isHiddenNavBar { + return YES; +} + +- (__kindof id)createPresenter { + return [[XPMineUserDataPresenter alloc] init]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initHettpRequest]; + [self initSubViews]; + [self initSubViewConstraints]; +} +#pragma mark - Http +- (void)initHettpRequest { + self.isFold = YES; + [self.presenter getUserSkillCardList:self.userUid]; + [self.presenter getClanDetailInfo:self.userUid]; +} +#pragma mark - Private Method +- (void)initSubViews { + [self.view addSubview:self.tableView]; +} + +- (void)initSubViewConstraints { + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.view); + }]; +} + +#pragma mark - UITableViewDelegate And UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 3; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if(section == 0) { + return 1; + }else if (section == 1) { + return (self.clanDetailInfo.clan.elderUid.length > 0 || self.clanDetailInfo.hall.ownerUid.length > 0) ? 1 : 0; + } else { + return 1; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + return 115; + } else if(indexPath.section == 1) { + if (self.clanDetailInfo.clan.elderUid.length > 0) { + if (self.clanDetailInfo.hall.ownerUid.length > 0) { + return self.isFold ? 115 : (115 + 60); + }else { + return 115; + } + }else { + return 75; + } + } else { + if (self.userInfo.userGiftWall.count > 0) { + CGFloat itemHeight = (56 + 20); + NSInteger count = self.userInfo.userGiftWall.count; + if (self.userInfo.userGiftWall.count > 16) { + count = 16; + } + int page = (int)count / 4; + int scale= count % 4; + if (scale == 0) { + return (itemHeight + 10) * page + 15 + 40; + } else { + return (itemHeight + 10) * (page + 1) + 15 + 40; + } + } else { + return 175; + } + } +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == 0) { + XPMineDataSkillCardTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineDataSkillCardTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineDataSkillCardTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineDataSkillCardTableViewCell class])]; + } + cell.delegate = self; + cell.datasourece = self.skillArray; + return cell; + } else if(indexPath.section == 1) { + + XPMineDataClanTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineDataClanTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineDataClanTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineDataClanTableViewCell class])]; + } + cell.delegate = self; + cell.clanInfo = self.clanDetailInfo; + return cell; + } else { + XPMineDataGiftTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineDataGiftTableViewCell class])]; + if (cell == nil) { + cell = [[XPMineDataGiftTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineDataGiftTableViewCell class])]; + } + cell.delegate = self; + cell.datasource = self.userInfo.userGiftWall; + return cell; + } +} + +#pragma mark - XPMineDataClanTableViewCellDelegate +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickFold:(UIButton *)sender { + self.isFold = sender.selected; + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; +} + +- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickEnter:(ClanDetailInfoModel *)clanInfo { +//TODO: 加入工会 +} + +#pragma mark - XPMineDataGiftTableViewCellDelegate +- (void)xPMineDataGiftTableViewCell:(XPMineDataGiftTableViewCell *)view didClickMore:(UIButton *)sender { + //TODO: 查看更多礼物墙 +} + +#pragma mark - XPMineDataSkillCardTableViewCell +- (void)xPMineDataSkillCardTableViewCell:(XPMineDataSkillCardTableViewCell *)view didSelectItem:(MineSkillCardListInfoModel *)skillInfo { + XPSkillCardViewController *skillCardVC = [[XPSkillCardViewController alloc] init]; + skillCardVC.uid = self.userUid.integerValue; + [self.navigationController pushViewController:skillCardVC animated:YES]; +} + +#pragma mark - JXPagingViewListViewDelegate +- (UIView *)listView { + return self.view; +} + +- (UIScrollView *)listScrollView { + return self.tableView; +} + +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + self.scrollCallback(scrollView); +} + +#pragma mark - XPMineUserDataProtocol +- (void)getUserSkillCardListSuccess:(NSArray *)list { + self.skillArray = list; + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; +} + +- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanInfo { + self.clanDetailInfo = clanInfo; + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone]; +} + +#pragma mark - Getters And Setters +- (void)setUserInfo:(UserInfoModel *)userInfo { + _userInfo = userInfo; + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:2] withRowAnimation:UITableViewRowAnimationNone]; +} + +- (UITableView *)tableView { + if (!_tableView) { + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.delegate = self; + _tableView.dataSource = self; + _tableView.tableFooterView = [UIView new]; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + _tableView.backgroundColor = [UIColor clearColor]; + if (@available(iOS 11.0, *)) { + _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [_tableView registerClass:[XPMineDataSkillCardTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineDataSkillCardTableViewCell class])]; + [_tableView registerClass:[XPMineDataClanTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineDataClanTableViewCell class])]; + } + return _tableView; +} + + +@end diff --git a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoGiftWallViewController.h b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoGiftWallViewController.h new file mode 100644 index 00000000..9537dac5 --- /dev/null +++ b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoGiftWallViewController.h @@ -0,0 +1,16 @@ +// +// XPMineGiftWallViewController.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface XPMineUserInfoGiftWallViewController : MvpViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoGiftWallViewController.m b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoGiftWallViewController.m new file mode 100644 index 00000000..0a1acdf6 --- /dev/null +++ b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoGiftWallViewController.m @@ -0,0 +1,31 @@ +// +// XPMineGiftWallViewController.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "XPMineUserInfoGiftWallViewController.h" + +@interface XPMineUserInfoGiftWallViewController () + +@end + +@implementation XPMineUserInfoGiftWallViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.h b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.h index 55c02e70..ee932d9f 100644 --- a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.h +++ b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.h @@ -6,14 +6,12 @@ // #import "MvpViewController.h" - NS_ASSUME_NONNULL_BEGIN @interface XPMineUserInfoViewController : MvpViewController ///用户的id @property (nonatomic,assign) NSInteger uid; -- (UIView *)getHeadHitView; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.m b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.m index 3d623c8f..f3b2affc 100644 --- a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.m +++ b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoViewController.m @@ -10,6 +10,9 @@ #import #import #import +#import +#import +#import ///Tool #import "ThemeColor.h" #import "XPMacro.h" @@ -30,10 +33,13 @@ #import "XPWebViewController.h" #import "SessionViewController.h" #import "XPRoomViewController.h" +#import "XPMineUserDataViewController.h" -@interface XPMineUserInfoViewController () -///列别 -@property (nonatomic,strong) UITableView *tableView; +@interface XPMineUserInfoViewController () +@property (nonatomic, strong) JXCategoryTitleView *titleView; +@property (nonatomic, strong) JXCategoryIndicatorLineView *lineView; +@property (nonatomic, strong) JXPagerView *pagingView; +@property (nonatomic, strong) NSArray *titles; ///头部视图 @property (nonatomic,strong) XPMineUserInfoHeaderView *headView; ///自定义的导航栏 @@ -46,6 +52,8 @@ @property (nonatomic,strong) UIButton *chatButton; ///关注 @property (nonatomic,strong) UIButton *attentionButton; +///资料 +@property (nonatomic,strong) XPMineUserDataViewController *userDataVC; @end @implementation XPMineUserInfoViewController @@ -73,17 +81,15 @@ } } -#pragma mark - Public Method -- (UIView *)getHeadHitView { - return self.headView.cycleScrollView; +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + self.pagingView.frame = self.view.bounds; } #pragma mark - Private Method - (void)initSubViews { - [self.view addSubview:self.tableView]; + [self.view addSubview:self.pagingView]; [self.view addSubview:self.navView]; - - self.tableView.tableHeaderView = self.headView; if (self.uid != [AccountInfoStorage instance].getUid.integerValue) { [self.view addSubview:self.bottomStackView]; [self.bottomStackView addArrangedSubview:self.chatButton]; @@ -98,16 +104,10 @@ } - (void)initSubViewConstraints { - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.view); - }]; - [self.navView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.mas_equalTo(self.view); make.height.mas_equalTo(kNavigationHeight); }]; - - } - (void)initHttpRequest { @@ -184,23 +184,33 @@ }]; } -#pragma mark - UITableViewDelegate And UITableViewDataSource - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 0; +#pragma mark - JXCategoryViewDelegate +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { + return 440; } -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 100; +- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { + return self.headView; } -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - XPMineUserInfoTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineUserInfoTableViewCell class])]; - if (cell == nil) { - cell = [[XPMineUserInfoTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineUserInfoTableViewCell class])]; +- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return 50; +} + +- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return self.titleView; +} + +- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { + return self.titles.count; +} + +- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { + UIViewController *viewController; + if (index == 0) { + return self.userDataVC; } - cell.userInfo = self.userInfo; - return cell; + return (id )viewController; } #pragma mark - XPMineCustomNavViewDelegate @@ -234,11 +244,11 @@ #pragma mark - XPMineUserInfoProtocol - (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { self.userInfo = userInfo; - [self.tableView reloadData]; + self.headView.userInfo = userInfo; } - (void)ongetDetailInfoSuccess:(UserInfoModel *)userInfo { - self.headView.userInfo = userInfo; + self.userDataVC.userInfo = userInfo; } - (void)getAttentionStateSuccess:(BOOL)status { @@ -275,30 +285,15 @@ } self.navView.editButton.selected = _uid == [AccountInfoStorage instance].getUid.integerValue; NSString * uidStr = [NSString stringWithFormat:@"%ld", uid]; + self.userDataVC.userUid = uidStr; [self.presenter getUserInfoWithUid:uidStr]; } } -- (UITableView *)tableView { - if (!_tableView) { - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; - _tableView.delegate = self; - _tableView.dataSource = self; - _tableView.tableFooterView = [UIView new]; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; - _tableView.backgroundColor = [UIColor clearColor]; - if (@available(iOS 11.0, *)) { - _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - [_tableView registerClass:[XPMineUserInfoTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPMineUserInfoTableViewCell class])]; - } - return _tableView; -} - (XPMineUserInfoHeaderView *)headView { if (!_headView) { _headView = [[XPMineUserInfoHeaderView alloc] init]; - _headView.frame = CGRectMake(0, 0, KScreenWidth, 270 + kSafeAreaTopHeight); _headView.delegate = self; } return _headView; @@ -357,5 +352,59 @@ return _attentionButton; } +- (JXCategoryTitleView *)titleView { + if (!_titleView) { + _titleView = [[JXCategoryTitleView alloc] init]; + _titleView.delegate = self; + _titleView.backgroundColor = [UIColor clearColor]; + _titleView.titleColor = [ThemeColor textThirdColor]; + _titleView.titleSelectedColor = [ThemeColor mainTextColor]; + _titleView.titleFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:12]; + _titleView.titleSelectedFont = [UIFont fontWithName:@"PingFang-SC-Medium" size:16]; + _titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; + _titleView.contentScrollViewClickTransitionAnimationEnabled = NO; + _titleView.defaultSelectedIndex = 0; + _titleView.averageCellSpacingEnabled = NO; + _titleView.contentEdgeInsetLeft = 20; + _titleView.titles = self.titles; + _titleView.cellSpacing = 20; + _titleView.titles = self.titles; + _titleView.listContainer = (id)self.pagingView.listContainerView; + + JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init]; + lineView.indicatorImageViewSize = CGSizeMake(41, 10); + lineView.verticalMargin = 14; + lineView.indicatorImageView.image = [UIImage imageNamed:@"home_recommend_indicator_room"]; + _titleView.indicators = @[lineView]; + } + return _titleView; +} + +- (JXPagerView *)pagingView { + if (!_pagingView) { + _pagingView = [[JXPagerView alloc] initWithDelegate:self]; + _pagingView.backgroundColor = [UIColor clearColor]; + _pagingView.listContainerView.backgroundColor = [UIColor clearColor]; + _pagingView.mainTableView.backgroundColor = [UIColor clearColor]; + _pagingView.listContainerView.listCellBackgroundColor = UIColor.clearColor; + } + return _pagingView; +} + +- (NSArray *)titles { + if (!_titles) { + _titles = @[@"资料"]; + } + return _titles; +} + +- (XPMineUserDataViewController *)userDataVC { + if (!_userDataVC) { + _userDataVC = [[XPMineUserDataViewController alloc] init]; + } + return _userDataVC; +} + + @end diff --git a/xplan-ios/Main/Mine/View/SkillCard/Api/Api+SkillCard.h b/xplan-ios/Main/Mine/View/SkillCard/Api/Api+SkillCard.h index e316c57e..80a2ced1 100644 --- a/xplan-ios/Main/Mine/View/SkillCard/Api/Api+SkillCard.h +++ b/xplan-ios/Main/Mine/View/SkillCard/Api/Api+SkillCard.h @@ -42,6 +42,11 @@ NS_ASSUME_NONNULL_BEGIN /// @param id 技能卡id + (void)requestDeleteSkillCard:(HttpRequestHelperCompletion)completion id:(NSString *)cardId; +/// 获取用户的技能卡 +/// @param completion 完成 +/// @param uid uid ++ (void)getUserSkillCardLsit:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; + @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/SkillCard/Api/Api+SkillCard.m b/xplan-ios/Main/Mine/View/SkillCard/Api/Api+SkillCard.m index 7cb00b2f..a9ca0379 100644 --- a/xplan-ios/Main/Mine/View/SkillCard/Api/Api+SkillCard.m +++ b/xplan-ios/Main/Mine/View/SkillCard/Api/Api+SkillCard.m @@ -51,4 +51,12 @@ [self makeRequest:@"skillCard/delete" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, cardId, nil]; } + +/// 获取用户的技能卡 +/// @param completion 完成 +/// @param uid uid ++ (void)getUserSkillCardLsit:(HttpRequestHelperCompletion)completion uid:(NSString *)uid { + [self makeRequest:@"skillCard/cardList" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; +} + @end diff --git a/xplan-ios/Main/Mine/View/SkillCard/Model/MineSkillCardListInfoModel.h b/xplan-ios/Main/Mine/View/SkillCard/Model/MineSkillCardListInfoModel.h new file mode 100644 index 00000000..163deb80 --- /dev/null +++ b/xplan-ios/Main/Mine/View/SkillCard/Model/MineSkillCardListInfoModel.h @@ -0,0 +1,24 @@ +// +// MineSkillCardListInfoModel.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MineSkillCardListInfoModel : NSObject +@property (nonatomic,copy) NSString *sId; +///id +@property (nonatomic,copy) NSString *cardId; +///图片 +@property (nonatomic,copy) NSString *icon; +///技能 +@property (nonatomic,copy) NSArray *propVals; +/// +@property (nonatomic,copy) NSString *name; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/SkillCard/Model/MineSkillCardListInfoModel.m b/xplan-ios/Main/Mine/View/SkillCard/Model/MineSkillCardListInfoModel.m new file mode 100644 index 00000000..9c5740ca --- /dev/null +++ b/xplan-ios/Main/Mine/View/SkillCard/Model/MineSkillCardListInfoModel.m @@ -0,0 +1,15 @@ +// +// MineSkillCardListInfoModel.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/14. +// + +#import "MineSkillCardListInfoModel.h" + +@implementation MineSkillCardListInfoModel ++ (NSDictionary *)replacedKeyFromPropertyName { + return @{@"sId":@"id"}; +} + +@end diff --git a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m index 6b7d8fa6..bc59b204 100644 --- a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m +++ b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoCustomNavView.m @@ -73,7 +73,7 @@ - (UIButton *)backButton { if (!_backButton) { _backButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; + [_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal]; _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; diff --git a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m index 38633153..d63ec087 100644 --- a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m +++ b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m @@ -15,58 +15,16 @@ #import "ThemeColor.h" #import "XPMacro.h" #import "UIImage+ImageEffects.h" +#import "UIImage+Utils.h" +#import "NetImageView.h" ///Model #import "UserInfoModel.h" -#import "NetImageView.h" - -@interface XPMineUserInfoImageCollectionViewCell : UICollectionViewCell -/// -@property (nonatomic,strong) NetImageView *logoImageView; -@end - -@implementation XPMineUserInfoImageCollectionViewCell - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - [self initSubViews]; - [self initSubViewConstraints]; - } - return self; -} - -#pragma mark - Private Method -- (void)initSubViews { - [self.contentView addSubview:self.logoImageView]; -} - -- (void)initSubViewConstraints { - [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self.contentView); - }]; -} - -#pragma mark - Getters And Setters -- (NetImageView *)logoImageView { - if (!_logoImageView) { - NetImageConfig * config = [[NetImageConfig alloc]init]; - config.imageType = ImageTypeUserInfoAlbum; - _logoImageView = [[NetImageView alloc] initWithConfig:config]; - _logoImageView.userInteractionEnabled = YES; - _logoImageView.layer.masksToBounds = YES; - _logoImageView.contentMode = UIViewContentModeScaleAspectFill; - } - return _logoImageView; -} - -@end - - @interface XPMineUserInfoHeaderView () ///轮播图 @property (nonatomic,strong) SDCycleScrollView *cycleScrollView; +///覆盖的view +@property (nonatomic,strong) UIImageView * coverImageView; ///显示当前的页数 @property (nonatomic,strong) UILabel *pageLabel; ///审核中图标 @@ -75,18 +33,53 @@ @property (nonatomic,strong) NSArray *imageUrls; ///用户的头像和相册 @property (nonatomic,strong) NSMutableArray *userPhtotArray; -///背景 -@property (nonatomic,strong) UIView * backView; +///用户信息 +@property (nonatomic,strong) UIView * userInfoView; +///用户信息的背景 +@property (nonatomic,strong) UIImageView *usershadowImageView; +@property (nonatomic,strong) UIStackView *nickStackView; ///名字 @property (nonatomic,strong) UILabel *nameLabel; ///sex @property (nonatomic,strong) UIImageView *sexImageView; -///id -@property (nonatomic,strong) UILabel *idLabel; -///签名 -@property (nonatomic,strong) UILabel *signLabel; ///正在直播中 @property (nonatomic,strong) UIButton *onlineButton; +/// +@property (nonatomic,strong) UIStackView *idStackView; +///靓号 +@property (nonatomic,strong) UIImageView *beautifulImageViw; +///id +@property (nonatomic,strong) UILabel *idLabel; +///空白的占位图 +@property (nonatomic,strong) UIView * spaceView; +///粉丝数 +@property (nonatomic,strong) UILabel *fansNumLabel; +///魅力等级 等级 铭牌 +@property (nonatomic,strong) UIStackView *tagStackView; +///魅力等级 +@property (nonatomic,strong) NetImageView *charmImageView; +///贵族icon +@property (nonatomic, strong) NetImageView *nobleIconImageView; +///等级 +@property (nonatomic,strong) NetImageView *experImageView; +///铭牌的容器 +@property (nonatomic,strong) UIView * namePlateView; +///铭牌图片 +@property (nonatomic,strong) NetImageView *nameplateImageView; +///铭牌文字 +@property (nonatomic,strong) UILabel *nameplateLabel; +///新用户 +@property (nonatomic,strong) UIImageView *newUserImageView; +///官方的 +@property (nonatomic,strong) UIImageView *officalImageView; +///签名的背景 +@property (nonatomic,strong) UIView * signBackView; +///签名 +@property (nonatomic,strong) UILabel *signLabel; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///头像的 +@property (nonatomic,strong) UserPhoto *avatarPhoto; @end @implementation XPMineUserInfoHeaderView @@ -101,67 +94,164 @@ } #pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.cycleScrollView]; + [self addSubview:self.coverImageView]; + [self addSubview:self.pageLabel]; + [self addSubview:self.reviewIcon]; + [self addSubview:self.userInfoView]; + + [self.userInfoView addSubview:self.usershadowImageView]; + [self.userInfoView addSubview:self.signBackView]; + [self.userInfoView addSubview:self.lineView]; + + [self.usershadowImageView addSubview:self.nickStackView]; + [self.usershadowImageView addSubview:self.idStackView]; + [self.usershadowImageView addSubview:self.tagStackView]; + + [self.nickStackView addArrangedSubview:self.nameLabel]; + [self.nickStackView addArrangedSubview:self.sexImageView]; + [self.nickStackView addArrangedSubview:self.onlineButton]; + + [self.idStackView addArrangedSubview:self.beautifulImageViw]; + [self.idStackView addArrangedSubview:self.idLabel]; + [self.idStackView addArrangedSubview:self.spaceView]; + [self.idStackView addArrangedSubview:self.fansNumLabel]; + + + ///用户信息中的标签 + [self.tagStackView addArrangedSubview:self.newUserImageView]; + [self.tagStackView addArrangedSubview:self.officalImageView]; + [self.tagStackView addArrangedSubview:self.experImageView]; + [self.tagStackView addArrangedSubview:self.charmImageView]; + [self.tagStackView addArrangedSubview:self.namePlateView]; + ///铭牌 + [self.namePlateView addSubview:self.nameplateImageView]; + [self.namePlateView addSubview:self.nameplateLabel]; + + [self.signBackView addSubview:self.signLabel]; +} + - (void)initSubViewConstraints { [self.cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.mas_equalTo(self); + make.left.right.top.mas_equalTo(self); + make.height.mas_equalTo(375); + }]; + + [self.coverImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.cycleScrollView); }]; [self.pageLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.right.mas_equalTo(-15); make.width.mas_equalTo(35); make.height.mas_equalTo(16); - make.top.mas_equalTo(self).offset(148 + kSafeAreaTopHeight); + make.bottom.mas_equalTo(self.cycleScrollView).offset(-30); }]; - - [self.reviewIcon mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.right.mas_equalTo(self); - make.width.mas_equalTo(85); - make.height.mas_equalTo(50); - }]; - [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self).inset(15); - make.bottom.mas_equalTo(self).offset(20); - make.height.mas_equalTo(100); + [self.reviewIcon mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.right.mas_equalTo(self); + make.width.mas_equalTo(85); + make.height.mas_equalTo(50); + }]; + + [self.userInfoView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.bottom.mas_equalTo(self); + make.height.mas_equalTo(210); + }]; + + [self.usershadowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.mas_equalTo(self.userInfoView); + make.height.mas_equalTo(146); + }]; + + [self.signBackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(79); + make.left.right.mas_equalTo(self.userInfoView); + make.top.mas_equalTo(self.usershadowImageView.mas_bottom).offset(-15); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.userInfoView).inset(15); + make.bottom.mas_equalTo(self.userInfoView); + make.height.mas_equalTo(1); + }]; + + [self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.usershadowImageView).offset(15); + make.top.mas_equalTo(self.usershadowImageView).offset(50); }]; [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.backView).offset(15); - make.top.mas_equalTo(self.backView).offset(15); + make.height.mas_equalTo(20); }]; [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.nameLabel.mas_right).offset(5); - make.centerY.mas_equalTo(self.nameLabel); - }]; - - [self.idLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.nameLabel); - make.top.mas_equalTo(self.nameLabel.mas_bottom).offset(10); - }]; - - [self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.nameLabel); - make.top.mas_equalTo(self.idLabel.mas_bottom).offset(18); + make.size.mas_equalTo(CGSizeMake(15, 15)); }]; [self.onlineButton mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(55, 18)); - make.right.mas_equalTo(self.backView).offset(-15); - make.top.mas_equalTo(self.backView).offset(10); }]; -} - -- (void)initSubViews { - [self addSubview:self.cycleScrollView]; - [self addSubview:self.pageLabel]; - [self addSubview:self.reviewIcon]; - [self addSubview:self.backView]; - [self.backView addSubview:self.nameLabel]; - [self.backView addSubview:self.sexImageView]; - [self.backView addSubview:self.idLabel]; - [self.backView addSubview:self.signLabel]; - [self.backView addSubview:self.onlineButton]; + + [self.idStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.nickStackView); + make.top.mas_equalTo(self.nickStackView.mas_bottom).offset(5); + }]; + + [self.beautifulImageViw mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(15, 15)); + }]; + + [self.spaceView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(22); + make.height.mas_equalTo(15); + }]; + + [self.tagStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.usershadowImageView).offset(15); + make.top.mas_equalTo(self.beautifulImageViw.mas_bottom).offset(5); + make.height.mas_equalTo(20); + }]; + + [self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + }]; + + [self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + }]; + + [self.newUserImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(15); + }]; + + [self.officalImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(20); + }]; + + [self.namePlateView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + make.width.mas_equalTo(self.nameplateImageView.mas_width); + }]; + + + [self.nameplateImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(20); + make.width.mas_equalTo(60); + make.left.top.mas_equalTo(self.namePlateView); + }]; + + [self.nameplateLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.mas_equalTo(self.nameplateImageView); + make.right.mas_equalTo(self.namePlateView).offset(-2); + }]; + + [self.signLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.signBackView).offset(10); + make.top.mas_equalTo(self.signBackView).offset(23); + }]; } #pragma mark - SDPhotoBrowserDelegate @@ -175,21 +265,10 @@ } #pragma mark - SDCycleScrollViewDelegate -/** 如果你需要自定义cell样式,请在实现此代理方法返回你的自定义cell的class。 */ -- (Class)customCollectionViewCellClassForCycleScrollView:(SDCycleScrollView *)view { - return [XPMineUserInfoImageCollectionViewCell class]; -} - -- (void)setupCustomCell:(UICollectionViewCell *)cell forIndex:(NSInteger)index cycleScrollView:(SDCycleScrollView *)view { - XPMineUserInfoImageCollectionViewCell * imageCell = (XPMineUserInfoImageCollectionViewCell *)cell; - NSString *url = [self.imageUrls objectAtIndex:index]; - imageCell.logoImageView.imageUrl = url; -} - -(void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didScrollToIndex:(NSInteger)index { self.pageLabel.text = [NSString stringWithFormat:@"%ld/%lu",(index + 1), (unsigned long)self.imageUrls.count]; - UserPhoto * photo = [self.userPhtotArray objectAtIndex:index]; - self.reviewIcon.hidden = !photo.isReview; + UserPhoto * photo = [self.userPhtotArray objectAtIndex:index]; + self.reviewIcon.hidden = !photo.isReview; } // 轮播图点击 @@ -215,19 +294,42 @@ _userInfo = userInfo; if (_userInfo) { self.nameLabel.text = _userInfo.nick; - self.idLabel.text = [NSString stringWithFormat:@"%@号:%ld",AppName, (long)_userInfo.erbanNo]; + self.idLabel.text = [NSString stringWithFormat:@"大鹅号:%@号:%ld",AppName, (long)_userInfo.erbanNo]; self.signLabel.text = _userInfo.userDesc.length > 0 ? _userInfo.userDesc : @"我是个默认签名"; - NSString * sexStr; - if (_userInfo.gender == GenderType_Male) { - sexStr = @"common_male"; - } else { - sexStr = @"common_female"; - } - self.sexImageView.image = [UIImage imageNamed:sexStr]; self.onlineButton.hidden = _userInfo.roomUid.length <=0; + self.fansNumLabel.text =[NSString stringWithFormat:@"%ld粉丝", _userInfo.fansNum]; + self.sexImageView.image = userInfo.gender == GenderType_Female ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"]; + self.officalImageView.hidden = userInfo.defUser != UserLevelType_Offical; + self.beautifulImageViw.hidden = !userInfo.hasPrettyErbanNo; + self.newUserImageView.hidden = !userInfo.newUser; + if (userInfo.userLevelVo.experUrl) { + self.experImageView.imageUrl = userInfo.userLevelVo.experUrl; + } + self.experImageView.hidden = userInfo.userLevelVo.experUrl.length <= 0; + + if (userInfo.userLevelVo.charmUrl) { + self.charmImageView.imageUrl = userInfo.userLevelVo.charmUrl; + } + self.charmImageView.hidden = userInfo.userLevelVo.charmUrl.length <= 0; + + if (userInfo.nameplateWord.length>0 && userInfo.nameplatePic.length>0) { + self.nameplateImageView.imageUrl = userInfo.nameplatePic; + self.nameplateLabel.text = userInfo.nameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } [self.userPhtotArray removeAllObjects]; // 轮播图 NSMutableArray * imageUrls = [NSMutableArray array]; + if (userInfo.avatar) { + [imageUrls addObject:userInfo.avatar]; + if (![self.userPhtotArray containsObject:self.avatarPhoto]) { + [self.userPhtotArray addObject:self.avatarPhoto]; + } + self.avatarPhoto.isReview = userInfo.isReview; + self.avatarPhoto.photoUrl = userInfo.avatar; + } if (self.userInfo.privatePhoto.count > 0) { for (int i = 0; i < self.userInfo.privatePhoto.count; i++) { UserPhoto * photo = [self.userInfo.privatePhoto objectAtIndex:i]; @@ -242,27 +344,55 @@ self.imageUrls = imageUrls; self.cycleScrollView.imageURLStringsGroup = imageUrls; self.pageLabel.text = [NSString stringWithFormat:@"1/%lu",(unsigned long)imageUrls.count]; - // 要初始化一下当前的审核状态 - self.reviewIcon.hidden = ![self.userInfo.privatePhoto objectAtIndex:0].isReview; + // 要初始化一下当前的审核状态 + self.reviewIcon.hidden = ![self.userInfo.privatePhoto objectAtIndex:0].isReview; } } } -- (UIView *)backView { - if (!_backView) { - _backView = [[UIView alloc] init]; - _backView.backgroundColor = [ThemeColor appCellBackgroundColor]; - _backView.layer.masksToBounds = YES; - _backView.layer.cornerRadius = 12; +- (UIImageView *)coverImageView { + if (!_coverImageView) { + _coverImageView = [[UIImageView alloc] init]; + _coverImageView.userInteractionEnabled = NO; + _coverImageView.image = [UIImage imageNamed:@"mine_userinfo_header_shadow_bg"]; } - return _backView; + return _coverImageView; +} + +- (UIView *)userInfoView { + if (!_userInfoView) { + _userInfoView = [[UIView alloc] init]; + _userInfoView.backgroundColor = [UIColor clearColor]; + _userInfoView.layer.masksToBounds = YES; + _userInfoView.layer.cornerRadius = 12; + } + return _userInfoView; +} + +- (UIImageView *)usershadowImageView { + if (!_usershadowImageView) { + _usershadowImageView = [[UIImageView alloc] init]; + _usershadowImageView.userInteractionEnabled = YES; + } + return _usershadowImageView; +} + +- (UIStackView *)nickStackView { + if (!_nickStackView) { + _nickStackView = [[UIStackView alloc] init]; + _nickStackView.axis = UILayoutConstraintAxisHorizontal; + _nickStackView.distribution = UIStackViewDistributionFill; + _nickStackView.alignment = UIStackViewAlignmentCenter; + _nickStackView.spacing = 10; + } + return _nickStackView; } - (UILabel *)nameLabel { if (!_nameLabel) { _nameLabel = [[UILabel alloc] init]; _nameLabel.font = [UIFont fontWithName:@"PingFang-SC-Medium" size:15]; - _nameLabel.textColor = [ThemeColor mainTextColor]; + _nameLabel.textColor = [UIColor whiteColor]; } return _nameLabel; } @@ -275,37 +405,61 @@ return _sexImageView; } +- (UIStackView *)idStackView { + if (!_idStackView) { + _idStackView = [[UIStackView alloc] init]; + _idStackView.axis = UILayoutConstraintAxisHorizontal; + _idStackView.distribution = UIStackViewDistributionFill; + _idStackView.alignment = UIStackViewAlignmentCenter; + _idStackView.spacing = 5; + } + return _idStackView; +} + +- (UIImageView *)beautifulImageViw { + if (!_beautifulImageViw) { + _beautifulImageViw = [[UIImageView alloc] init]; + _beautifulImageViw.userInteractionEnabled = YES; + _beautifulImageViw.image = [UIImage imageNamed:@""]; + } + return _beautifulImageViw; +} + +- (UILabel *)fansNumLabel { + if (!_fansNumLabel) { + _fansNumLabel = [[UILabel alloc] init]; + _fansNumLabel.font = [UIFont systemFontOfSize:12]; + _fansNumLabel.textColor = [UIColor whiteColor]; + } + return _fansNumLabel; +} + +- (UIView *)spaceView { + if (!_spaceView) { + _spaceView = [[UIView alloc] init]; + _spaceView.backgroundColor = [UIColor clearColor]; + } + return _spaceView; +} + - (UILabel *)idLabel { if (!_idLabel) { _idLabel = [[UILabel alloc] init]; _idLabel.font = [UIFont systemFontOfSize:11]; - _idLabel.textColor = [ThemeColor textThirdColor]; + _idLabel.textColor = [UIColor whiteColor]; } return _idLabel; } -- (UILabel *)signLabel { - if (!_signLabel) { - _signLabel = [[UILabel alloc] init]; - _signLabel.font = [UIFont systemFontOfSize:11];; - _signLabel.textColor = [ThemeColor secondTextColor]; - } - return _signLabel; -} - - (UIButton *)onlineButton { if (!_onlineButton) { _onlineButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_onlineButton setTitle:@"直播中" forState:UIControlStateNormal]; - [_onlineButton setImage:[UIImage imageNamed:@"home_search_user_online"] forState:UIControlStateNormal]; - [_onlineButton setTitleColor:[ThemeColor appEmphasizeColor] forState:UIControlStateNormal]; - _onlineButton.backgroundColor = [UIColor clearColor]; - _onlineButton.titleLabel.font = [UIFont systemFontOfSize:10]; + [_onlineButton setTitleColor:[ThemeColor confirmButtonTextColor] forState:UIControlStateNormal]; + _onlineButton.titleLabel.font = [UIFont systemFontOfSize:12]; + [_onlineButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[ThemeColor confirmButtonGradientStartColor], [ThemeColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; _onlineButton.layer.masksToBounds = YES; - _onlineButton.layer.cornerRadius = 18/2; - _onlineButton.layer.borderColor = [ThemeColor appEmphasizeColor].CGColor; - _onlineButton.layer.borderWidth = 1; - _onlineButton.hidden = YES; + _onlineButton.layer.cornerRadius = 10; [_onlineButton addTarget:self action:@selector(onlineButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _onlineButton; @@ -313,12 +467,10 @@ - (SDCycleScrollView *)cycleScrollView { if (!_cycleScrollView) { - _cycleScrollView = [[SDCycleScrollView alloc] init]; + _cycleScrollView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIImageConstant defalutBannerPlaceholder]]; _cycleScrollView.backgroundColor = [UIColor clearColor]; - _cycleScrollView.delegate = self; _cycleScrollView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill; - _cycleScrollView.pageControlStyle = SDCycleScrollViewPageContolStyleNone;; - _cycleScrollView.placeholderImage = [UIImageConstant defaultAvatarPlaceholder]; + _cycleScrollView.pageControlStyle = SDCycleScrollViewPageContolStyleNone; _cycleScrollView.autoScroll = NO; } return _cycleScrollView; @@ -338,14 +490,142 @@ } - (UIImageView *)reviewIcon { - if (!_reviewIcon) { - _reviewIcon = [[UIImageView alloc] init]; - _reviewIcon.image = [UIImage imageNamed:@"mine_album_reviewing"]; - _reviewIcon.hidden = YES; - } - return _reviewIcon; + if (!_reviewIcon) { + _reviewIcon = [[UIImageView alloc] init]; + _reviewIcon.image = [UIImage imageNamed:@"mine_album_reviewing"]; + _reviewIcon.hidden = YES; + } + return _reviewIcon; } +- (UIStackView *)tagStackView { + if (!_tagStackView) { + _tagStackView = [[UIStackView alloc] init]; + _tagStackView.axis = UILayoutConstraintAxisHorizontal; + _tagStackView.distribution = UIStackViewDistributionFill; + _tagStackView.alignment = UIStackViewAlignmentCenter; + _tagStackView.spacing = 2; + } + return _tagStackView; +} +- (NetImageView *)experImageView { + if (!_experImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _experImageView = [[NetImageView alloc] initWithConfig:config]; + _experImageView.userInteractionEnabled = YES; + _experImageView.hidden = YES; + _experImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _experImageView; +} + +- (NetImageView *)charmImageView { + if (!_charmImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _charmImageView = [[NetImageView alloc] initWithConfig:config]; + _charmImageView.userInteractionEnabled = YES; + _charmImageView.hidden = YES; + _charmImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _charmImageView; +} + +- (NetImageView *)nobleIconImageView { + if (!_nobleIconImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _nobleIconImageView = [[NetImageView alloc] initWithConfig:config]; + _nobleIconImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nobleIconImageView; +} + +- (UIView *)namePlateView { + if (!_namePlateView) { + _namePlateView = [[UIView alloc] init]; + _namePlateView.backgroundColor = [UIColor clearColor]; + _namePlateView.hidden = YES; + } + return _namePlateView; +} + +- (NetImageView *)nameplateImageView { + if (!_nameplateImageView) { + NetImageConfig * config = [[NetImageConfig alloc] init]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + config.imageType = ImageTypeUserCardLevel; + _nameplateImageView = [[NetImageView alloc] initWithConfig:config]; + _nameplateImageView.userInteractionEnabled = YES; + _nameplateImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _nameplateImageView; +} + +- (UILabel *)nameplateLabel { + if (!_nameplateLabel) { + _nameplateLabel = [[UILabel alloc] init]; + _nameplateLabel.font = [UIFont systemFontOfSize:10]; + _nameplateLabel.textAlignment = NSTextAlignmentCenter; + _nameplateLabel.textColor = [UIColor whiteColor]; + } + return _nameplateLabel; +} + +- (UIImageView *)newUserImageView { + if (!_newUserImageView) { + _newUserImageView = [[UIImageView alloc] init]; + _newUserImageView.userInteractionEnabled = YES; + _newUserImageView.image = [UIImage imageNamed:@"common_new_user"]; + _newUserImageView.hidden = YES; + } + return _newUserImageView; +} + +- (UIImageView *)officalImageView { + if (!_officalImageView) { + _officalImageView = [[UIImageView alloc] init]; + _officalImageView.userInteractionEnabled = YES; + _officalImageView.image = [UIImage imageNamed:@"common_offical"]; + _officalImageView.hidden = YES; + } + return _officalImageView; +} + +- (UIView *)signBackView { + if (!_signBackView) { + _signBackView = [[UIView alloc] init]; + _signBackView.backgroundColor = [ThemeColor appBackgroundColor]; + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 79) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(12, 12)].CGPath; + _signBackView.layer.mask = layer; + } + return _signBackView; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [ThemeColor dividerColor]; + } + return _lineView; +} + +- (UILabel *)signLabel { + if (!_signLabel) { + _signLabel = [[UILabel alloc] init]; + _signLabel.font = [UIFont systemFontOfSize:12];; + _signLabel.textColor = [ThemeColor secondTextColor]; + _signLabel.numberOfLines = 2; + } + return _signLabel; +} + + - (NSMutableArray *)userPhtotArray { if (!_userPhtotArray) { _userPhtotArray = [NSMutableArray array]; @@ -353,4 +633,11 @@ return _userPhtotArray; } +- (UserPhoto *)avatarPhoto { + if (!_avatarPhoto) { + _avatarPhoto = [[UserPhoto alloc] init]; + } + return _avatarPhoto; +} + @end diff --git a/xplan-ios/Main/Room/View/UserCard/Api/Api+UserCard.h b/xplan-ios/Main/Room/View/UserCard/Api/Api+UserCard.h index 7fe775e1..1e755e4c 100644 --- a/xplan-ios/Main/Room/View/UserCard/Api/Api+UserCard.h +++ b/xplan-ios/Main/Room/View/UserCard/Api/Api+UserCard.h @@ -47,10 +47,6 @@ NS_ASSUME_NONNULL_BEGIN /// @param electorUserId 自己的uid + (void)roomDatingPickUser:(HttpRequestHelperCompletion)completion roomUserId:(NSString *)roomUserId chosenUserId:(NSString *)chosenUserId electorUserId:(NSString *)electorUserId; -/// 上传访问用户的记录 -/// @param completion 完成 -/// @param uid 被访问的用户uid -+ (void)uploadVisitUserCompletion:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; @end