From d22d0aa9feb67be7e82598767416a95b8f0637ed Mon Sep 17 00:00:00 2001 From: liyuhua <15626451870@163.com> Date: Fri, 17 May 2024 11:27:36 +0800 Subject: [PATCH] =?UTF-8?q?1.UI=E4=BF=AE=E6=94=B9=202.=E4=BF=AE=E5=A4=8Dbu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YuMi.xcodeproj/project.pbxproj | 24 +- .../mine_noble_center_tag_title_bg_ar@2x.png | Bin 2224 -> 973 bytes .../mine_noble_center_tag_title_bg_ar@3x.png | Bin 3678 -> 1898 bytes .../Contents.json | 22 -- .../mine_noble_center_tag_title_bg_en@2x.png | Bin 1980 -> 0 bytes .../mine_noble_center_tag_title_bg_en@3x.png | Bin 3094 -> 0 bytes .../Contents.json | 22 -- .../mine_noble_center_tag_title_bg@2x.png | Bin 4439 -> 0 bytes .../mine_noble_center_tag_title_bg@3x.png | Bin 9720 -> 0 bytes .../MSSessionPublicChatHalIRightmageCell.h | 16 + .../MSSessionPublicChatHalIRightmageCell.m | 185 +++++++++ .../Cell/MSSessionPublicChatHalImageCell.h | 2 +- .../Cell/MSSessionPublicChatHalImageCell.m | 356 +++--------------- .../MSSessionPublicChatHalRightTextCell.h | 16 + .../MSSessionPublicChatHalRightTextCell.m | 167 ++++++++ .../Cell/MSSessionPublicChatHalTextCell.m | 129 ++++++- .../Content/MessageContentChatHallHeadView.h | 17 + .../Content/MessageContentChatHallHeadView.m | 196 ++++++++++ .../Content/MessageContentHeadLinesText.h | 16 - .../Content/MessageContentHeadLinesText.m | 346 ----------------- .../MSSessionPublicChatHalImageModel.h | 1 - .../MSSessionPublicChatHalImageModel.m | 11 - .../SesssionModel/MessageHeadlinesTextModel.h | 1 - .../SesssionModel/MessageHeadlinesTextModel.m | 18 +- .../View/Session/MSSessionPublicChatHallVC.m | 24 +- .../View/SubViews/PINobleCenterTitleCell.m | 13 +- .../XPRoomMenuContainerView.m | 2 +- .../View/MoreView/Model/XPRoomMoreItemModel.h | 20 +- .../MoreView/Presenter/XPMoreMenuPresenter.m | 39 +- .../View/XPRoomMoreMenuViewController.m | 94 ++--- .../YMRoom/View/Setting/Api/Api+RoomSetting.h | 10 + .../YMRoom/View/Setting/Api/Api+RoomSetting.m | 16 + .../Setting/Model/XPRoomSettingItemModel.h | 4 +- .../Presenter/XPRoomSettingPresenter.h | 8 + .../Presenter/XPRoomSettingPresenter.m | 46 ++- .../Setting/Protocol/XPRoomSettingProtocol.h | 5 + .../View/XPRoomSettingViewController.m | 49 ++- .../View/StageView/MicroView/MicroView.m | 48 +-- .../YMTabbar/View/TabbarViewController.m | 63 ++-- YuMi/ar.lproj/Localizable.strings | 8 +- YuMi/en.lproj/Localizable.strings | 8 +- YuMi/zh-Hans.lproj/Localizable.strings | 8 +- YuMi/zh-Hant.lproj/Localizable.strings | 8 +- 43 files changed, 1082 insertions(+), 936 deletions(-) delete mode 100644 YuMi/Assets.xcassets/Language/en/mine_noble_center_tag_title_bg_en.imageset/Contents.json delete mode 100644 YuMi/Assets.xcassets/Language/en/mine_noble_center_tag_title_bg_en.imageset/mine_noble_center_tag_title_bg_en@2x.png delete mode 100644 YuMi/Assets.xcassets/Language/en/mine_noble_center_tag_title_bg_en.imageset/mine_noble_center_tag_title_bg_en@3x.png delete mode 100644 YuMi/Assets.xcassets/jm/Noble/mine_noble_center_tag_title_bg.imageset/Contents.json delete mode 100644 YuMi/Assets.xcassets/jm/Noble/mine_noble_center_tag_title_bg.imageset/mine_noble_center_tag_title_bg@2x.png delete mode 100644 YuMi/Assets.xcassets/jm/Noble/mine_noble_center_tag_title_bg.imageset/mine_noble_center_tag_title_bg@3x.png create mode 100644 YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalIRightmageCell.h create mode 100644 YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalIRightmageCell.m create mode 100644 YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalRightTextCell.h create mode 100644 YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalRightTextCell.m create mode 100644 YuMi/Modules/YMMessage/View/Session/Content/MessageContentChatHallHeadView.h create mode 100644 YuMi/Modules/YMMessage/View/Session/Content/MessageContentChatHallHeadView.m delete mode 100644 YuMi/Modules/YMMessage/View/Session/Content/MessageContentHeadLinesText.h delete mode 100644 YuMi/Modules/YMMessage/View/Session/Content/MessageContentHeadLinesText.m diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index 5d9b40ea..94ecd4fe 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -211,6 +211,9 @@ 234489082AC3C5DA0070E5D5 /* SudMGP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 234489072AC3C5DA0070E5D5 /* SudMGP.framework */; }; 234489092AC3C5FF0070E5D5 /* SudMGP.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 234489072AC3C5DA0070E5D5 /* SudMGP.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 234D821E2AEC57CF0022EFEB /* YYTextAsyncLayer+PITextAsyncLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 234D821D2AEC57CF0022EFEB /* YYTextAsyncLayer+PITextAsyncLayer.m */; }; + 234E50A52BF5E556005CB6D5 /* MessageContentChatHallHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 234E50A42BF5E556005CB6D5 /* MessageContentChatHallHeadView.m */; }; + 234E50A82BF5EBDD005CB6D5 /* MSSessionPublicChatHalRightTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 234E50A72BF5EBDD005CB6D5 /* MSSessionPublicChatHalRightTextCell.m */; }; + 234E50AB2BF5F95A005CB6D5 /* MSSessionPublicChatHalIRightmageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 234E50AA2BF5F95A005CB6D5 /* MSSessionPublicChatHalIRightmageCell.m */; }; 234F44E32B3EA4F900E2B532 /* PILineManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 234F44E22B3EA4F900E2B532 /* PILineManager.swift */; }; 2357145A2BE8BC6C004C81D6 /* MSSessionPublicChatHallVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 235714592BE8BC6C004C81D6 /* MSSessionPublicChatHallVC.m */; }; 235714602BE8BD5C004C81D6 /* MSSessionScrollingModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2357145F2BE8BD5C004C81D6 /* MSSessionScrollingModel.m */; }; @@ -222,7 +225,6 @@ 235714772BEC9E5E004C81D6 /* MSSessionContextHeadlinesView.m in Sources */ = {isa = PBXBuildFile; fileRef = 235714762BEC9E5E004C81D6 /* MSSessionContextHeadlinesView.m */; }; 2357147A2BECA102004C81D6 /* MessageHeadlinesModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 235714792BECA102004C81D6 /* MessageHeadlinesModel.m */; }; 235714802BECB217004C81D6 /* MSSessionReleaseHeadlinesPayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2357147F2BECB217004C81D6 /* MSSessionReleaseHeadlinesPayView.m */; }; - 235714862BECC24F004C81D6 /* MessageContentHeadLinesText.m in Sources */ = {isa = PBXBuildFile; fileRef = 235714852BECC24F004C81D6 /* MessageContentHeadLinesText.m */; }; 235714892BECC38F004C81D6 /* MessageHeadlinesTextModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 235714882BECC38F004C81D6 /* MessageHeadlinesTextModel.m */; }; 2357148C2BECEE33004C81D6 /* MSSessionPublicChatHalTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2357148B2BECEE33004C81D6 /* MSSessionPublicChatHalTextCell.m */; }; 2357148F2BEDC94D004C81D6 /* MSSessionPublicChatHalImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2357148E2BEDC94D004C81D6 /* MSSessionPublicChatHalImageCell.m */; }; @@ -1943,6 +1945,12 @@ 234489072AC3C5DA0070E5D5 /* SudMGP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SudMGP.framework; sourceTree = ""; }; 234D821C2AEC57CF0022EFEB /* YYTextAsyncLayer+PITextAsyncLayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "YYTextAsyncLayer+PITextAsyncLayer.h"; path = "YuMi/Appdelegate/YYTextAsyncLayer+PITextAsyncLayer.h"; sourceTree = SOURCE_ROOT; }; 234D821D2AEC57CF0022EFEB /* YYTextAsyncLayer+PITextAsyncLayer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "YYTextAsyncLayer+PITextAsyncLayer.m"; path = "YuMi/Appdelegate/YYTextAsyncLayer+PITextAsyncLayer.m"; sourceTree = SOURCE_ROOT; }; + 234E50A32BF5E556005CB6D5 /* MessageContentChatHallHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentChatHallHeadView.h; sourceTree = ""; }; + 234E50A42BF5E556005CB6D5 /* MessageContentChatHallHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentChatHallHeadView.m; sourceTree = ""; }; + 234E50A62BF5EBDD005CB6D5 /* MSSessionPublicChatHalRightTextCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSSessionPublicChatHalRightTextCell.h; sourceTree = ""; }; + 234E50A72BF5EBDD005CB6D5 /* MSSessionPublicChatHalRightTextCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSSessionPublicChatHalRightTextCell.m; sourceTree = ""; }; + 234E50A92BF5F95A005CB6D5 /* MSSessionPublicChatHalIRightmageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSSessionPublicChatHalIRightmageCell.h; sourceTree = ""; }; + 234E50AA2BF5F95A005CB6D5 /* MSSessionPublicChatHalIRightmageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSSessionPublicChatHalIRightmageCell.m; sourceTree = ""; }; 234F44E22B3EA4F900E2B532 /* PILineManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PILineManager.swift; sourceTree = ""; }; 235714582BE8BC6C004C81D6 /* MSSessionPublicChatHallVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSSessionPublicChatHallVC.h; sourceTree = ""; }; 235714592BE8BC6C004C81D6 /* MSSessionPublicChatHallVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSSessionPublicChatHallVC.m; sourceTree = ""; }; @@ -1964,8 +1972,6 @@ 235714792BECA102004C81D6 /* MessageHeadlinesModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageHeadlinesModel.m; sourceTree = ""; }; 2357147E2BECB217004C81D6 /* MSSessionReleaseHeadlinesPayView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSSessionReleaseHeadlinesPayView.h; sourceTree = ""; }; 2357147F2BECB217004C81D6 /* MSSessionReleaseHeadlinesPayView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSSessionReleaseHeadlinesPayView.m; sourceTree = ""; }; - 235714842BECC24F004C81D6 /* MessageContentHeadLinesText.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentHeadLinesText.h; sourceTree = ""; }; - 235714852BECC24F004C81D6 /* MessageContentHeadLinesText.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentHeadLinesText.m; sourceTree = ""; }; 235714872BECC38F004C81D6 /* MessageHeadlinesTextModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageHeadlinesTextModel.h; sourceTree = ""; }; 235714882BECC38F004C81D6 /* MessageHeadlinesTextModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageHeadlinesTextModel.m; sourceTree = ""; }; 2357148A2BECEE33004C81D6 /* MSSessionPublicChatHalTextCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSSessionPublicChatHalTextCell.h; sourceTree = ""; }; @@ -5159,8 +5165,8 @@ E8778AE32988B57B00CF139B /* MessageContentRevokeView.m */, 235714752BEC9E5E004C81D6 /* MSSessionContextHeadlinesView.h */, 235714762BEC9E5E004C81D6 /* MSSessionContextHeadlinesView.m */, - 235714842BECC24F004C81D6 /* MessageContentHeadLinesText.h */, - 235714852BECC24F004C81D6 /* MessageContentHeadLinesText.m */, + 234E50A32BF5E556005CB6D5 /* MessageContentChatHallHeadView.h */, + 234E50A42BF5E556005CB6D5 /* MessageContentChatHallHeadView.m */, ); path = Content; sourceTree = ""; @@ -8750,8 +8756,12 @@ 9B7D804C27537950003DAC0C /* MessageCell.m */, 2357148A2BECEE33004C81D6 /* MSSessionPublicChatHalTextCell.h */, 2357148B2BECEE33004C81D6 /* MSSessionPublicChatHalTextCell.m */, + 234E50A62BF5EBDD005CB6D5 /* MSSessionPublicChatHalRightTextCell.h */, + 234E50A72BF5EBDD005CB6D5 /* MSSessionPublicChatHalRightTextCell.m */, 2357148D2BEDC94D004C81D6 /* MSSessionPublicChatHalImageCell.h */, 2357148E2BEDC94D004C81D6 /* MSSessionPublicChatHalImageCell.m */, + 234E50A92BF5F95A005CB6D5 /* MSSessionPublicChatHalIRightmageCell.h */, + 234E50AA2BF5F95A005CB6D5 /* MSSessionPublicChatHalIRightmageCell.m */, E875A1B629755EE200AB1BBD /* SessionUserInfoTableViewCell.h */, E875A1B729755EE200AB1BBD /* SessionUserInfoTableViewCell.m */, E885D531297798E1004DC088 /* SessionSettingTableViewCell.h */, @@ -11179,7 +11189,6 @@ 9B9BBF83288FBFB3004E2E74 /* XPNewUserRoomGiftView.m in Sources */, E838369A298A59C100112E1C /* MessageTipsView.m in Sources */, E8899C852785CC69007944BE /* XPRoomDatingAnimationView.m in Sources */, - 235714862BECC24F004C81D6 /* MessageContentHeadLinesText.m in Sources */, 2331C16F2A5EB71000E1D940 /* XPNobleCenterNavView.m in Sources */, E85E7B1B2A4EB0D200B6D00A /* XPMineMainIncomeStatisViewController.m in Sources */, E84BF7D4277C383700EF8877 /* XPRoomSettingInputView.m in Sources */, @@ -11261,6 +11270,7 @@ E82109B026F1D83500FC3319 /* LoginBindPhonePresent.m in Sources */, E81C1B1F27705F7A0020D1E4 /* XPArrangeMicViewController.m in Sources */, E8B825C726EA0D9A009E8E9F /* LoginVerifCodeProtocol.h in Sources */, + 234E50A52BF5E556005CB6D5 /* MessageContentChatHallHeadView.m in Sources */, 23E9EAAE2A84C9B800B792F2 /* XPMineUserInfoTagView.m in Sources */, 236B2E4E2AA07D06003967A8 /* Api+LittleGame.m in Sources */, 237700E02BC7D78600D661F1 /* MSBaseRTLFlowLayout.m in Sources */, @@ -11932,6 +11942,7 @@ 1464C5ED29A4784F00AF7C94 /* XPMineSimpleUserInfoViewController.m in Sources */, E8098CB1282E86EF0090B9F0 /* XPMonentsContentView.m in Sources */, E85E3FA728B7A6F000268DC8 /* MessageContentMonentsView.m in Sources */, + 234E50A82BF5EBDD005CB6D5 /* MSSessionPublicChatHalRightTextCell.m in Sources */, E880B3AF278BE1D800A83B0D /* Api+AcrossRoomPK.m in Sources */, 238B37DC2AC55A2C00BFC9D5 /* XPTreasureFairyBallView.m in Sources */, 23CEFC4B2AFB8FC100576D89 /* BSUIDemoUtil.m in Sources */, @@ -11994,6 +12005,7 @@ 1808072D2731598F001FD836 /* XPNetImageYYLabel.m in Sources */, E818E348286ECA4B005EDF68 /* XPMonentsPublishViewController.m in Sources */, 9B88E20C28C5EB8300D26FBA /* MessageContentRedPacketView.m in Sources */, + 234E50AB2BF5F95A005CB6D5 /* MSSessionPublicChatHalIRightmageCell.m in Sources */, E896EFAF2771AF0F00AD2CC1 /* XPMineFriendEmptyTableViewCell.m in Sources */, E8E859E928264F4500EE4857 /* XPRoomTransferMusicViewController.m in Sources */, 18486213271EA9DA005FC5DC /* RtcManager.m in Sources */, diff --git a/YuMi/Assets.xcassets/Language/ar/mine_noble_center_tag_title_bg_ar.imageset/mine_noble_center_tag_title_bg_ar@2x.png b/YuMi/Assets.xcassets/Language/ar/mine_noble_center_tag_title_bg_ar.imageset/mine_noble_center_tag_title_bg_ar@2x.png index 1907de820104e8b919268debb2281e46f6a6313f..b2bbf72d31607369219576e752e33d21935d8dff 100644 GIT binary patch literal 973 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 GOZXq(HjWwq literal 3678 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 diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_tag_title_bg.imageset/Contents.json b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_tag_title_bg.imageset/Contents.json deleted file mode 100644 index 4239bddb..00000000 --- a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_tag_title_bg.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "mine_noble_center_tag_title_bg@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "mine_noble_center_tag_title_bg@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_tag_title_bg.imageset/mine_noble_center_tag_title_bg@2x.png b/YuMi/Assets.xcassets/jm/Noble/mine_noble_center_tag_title_bg.imageset/mine_noble_center_tag_title_bg@2x.png deleted file mode 100644 index 8d126ef95341a485f9df3d69ea13afc6776ad87d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4439 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 +#import "MessageBaseModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MSSessionPublicChatHalIRightmageCell : UITableViewCell +- (void)render:(nonnull MessageBaseModel *)model ; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalIRightmageCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalIRightmageCell.m new file mode 100644 index 00000000..eaa73d81 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalIRightmageCell.m @@ -0,0 +1,185 @@ +// +// MSSessionPublicChatHalIRightmageCell.m +// YuMi +// +// Created by duoban on 2024/5/16. +// + +#import "MSSessionPublicChatHalIRightmageCell.h" +#import "DJDKMIMOMColor.h" +#import "NSObject+MJExtension.h" +#import "QEmotionHelper.h" +#import +#import +#import "SpriteSheetImageManager.h" +#import "MessageHeadlinesTextModel.h" +#import "XPMessageRemoteExtModel.h" +#import "MSSessionPublicChatHalImageCell.h" +#import "MSSessionPublicChatHalImageModel.h" +#import "SDPhotoBrowser.h" +#import "MessageContentChatHallHeadView.h" +@interface MSSessionPublicChatHalIRightmageCell() +@property(nonatomic,strong) MSSessionPublicChatHalImageModel * imageModel; +@property(nonatomic,strong) MessageContentChatHallHeadView *avatarView; +@property(nonatomic,strong) UIImageView *bgImageView; +///气泡 +@property (nonatomic,strong) NetImageView *bubbleImageView; +@property(nonatomic,strong) NetImageView *picImageView; +@end +@implementation MSSessionPublicChatHalIRightmageCell + +-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if(self){ + [self installUI]; + [self installConstraints]; + } + return self; +} + +-(void)installUI{ + self.contentView.backgroundColor = [UIColor clearColor]; + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = 0; + [self.contentView addSubview:self.avatarView]; + [self.contentView addSubview:self.bgImageView]; + [self.contentView addSubview:self.bubbleImageView]; + [self.contentView addSubview:self.picImageView]; + +} +-(void)installConstraints{ + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.trailing.top.equalTo(self.contentView); + make.height.mas_equalTo(kGetScaleWidth(48)); + }]; + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-kGetScaleWidth(72)); + make.width.mas_equalTo(kGetScaleWidth(52)); + make.height.mas_equalTo(kGetScaleWidth(36)); + make.top.mas_equalTo(kGetScaleWidth(55)); + }]; + [self.bubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.bgImageView); + }]; + + [self.picImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.bgImageView).with.insets(UIEdgeInsetsMake(kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10))); + }]; + + + + +} +#pragma mark - 懒加载 + + +- (void)render:(nonnull MessageBaseModel *)model { + + + + MSSessionPublicChatHalImageModel * imageModel = (MSSessionPublicChatHalImageModel *)model; + self.imageModel = imageModel; + XPMessageRemoteExtModel *extModel = imageModel.extModel; + if(extModel == nil)return; + [self.avatarView render:model]; + [self.picImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(model.contentSize.height); + make.width.mas_equalTo(model.contentSize.width); + }]; + if (imageModel.image) { + self.picImageView.image = imageModel.image; + }else { + [self.picImageView loadImageWithUrl:imageModel.imageUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + self.picImageView.image = image; + }]; + } + [self.bgImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(55)); + make.trailing.mas_equalTo(-kGetScaleWidth(72)); + make.width.mas_equalTo(model.contentSize.width+kGetScaleWidth(10)); + make.height.mas_equalTo(model.contentSize.height+kGetScaleWidth(10)); + make.bottom.mas_equalTo(-kGetScaleWidth(10)); + }]; + + +} +#pragma mark - SDPhotoBrowserDelegate +- (NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index { + return [NSURL URLWithString:self.imageModel.url]; +} + +- (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { + return [UIImageConstant defalutBannerPlaceholder]; +} +- (UIImage *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageForIndex:(NSInteger)index{ + if(self.imageModel.url == nil && self.imageModel.image != nil){ + return self.imageModel.image; + } + return nil; +} +-(void)didLeftTapImage{ + SDPhotoBrowser *browser = [[SDPhotoBrowser alloc]init]; + browser.sourceImagesContainerView = self; + browser.delegate = self; + browser.imageCount = 1; + browser.currentImageIndex = 0; + browser.isMe = NO; + [browser show]; +} +-(void)didRigthTapImage{ + SDPhotoBrowser *browser = [[SDPhotoBrowser alloc]init]; + browser.sourceImagesContainerView = self; + browser.delegate = self; + browser.imageCount = 1; + browser.currentImageIndex = 0; + browser.isMe = NO; + [browser show]; +} +- (UIImage*)resizableImage:(UIImage *)image { + //图片拉伸区域 + CGFloat top = (image.size.height - 1) / 2; + CGFloat left = (image.size.width - 1) / 2; + CGFloat right = (image.size.width - 1) / 2; + CGFloat bottom = (image.size.height - 1) / 2; + return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right) resizingMode:UIImageResizingModeStretch]; +} +- (MessageContentChatHallHeadView *)avatarView{ + if(!_avatarView){ + _avatarView = [[MessageContentChatHallHeadView alloc]initWithFrame:CGRectZero isSelf:NO]; + } + return _avatarView; +} + +- (UIImageView *)bgImageView{ + if(!_bgImageView){ + _bgImageView = [UIImageView new]; + _bgImageView.userInteractionEnabled = YES; + _bgImageView.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; + } + return _bgImageView; +} + +- (NetImageView *)bubbleImageView{ + if(!_bubbleImageView){ + _bubbleImageView = [[NetImageView alloc] init]; + + } + return _bubbleImageView; +} + + + + +- (NetImageView *)picImageView{ + if(!_picImageView){ + _picImageView = [NetImageView new]; + _picImageView.userInteractionEnabled = YES; + _picImageView.layer.masksToBounds = YES; + _picImageView.contentMode = UIViewContentModeScaleAspectFill; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didLeftTapImage)]; + [_picImageView addGestureRecognizer:tap]; + } + return _picImageView; +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.h b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.h index f5eacddb..974c1146 100644 --- a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.h +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.h @@ -6,7 +6,7 @@ // #import - +#import "MessageBaseModel.h" NS_ASSUME_NONNULL_BEGIN @interface MSSessionPublicChatHalImageCell : UITableViewCell diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.m index 6a054d1d..b16f4524 100644 --- a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.m +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalImageCell.m @@ -15,40 +15,14 @@ #import "MSSessionPublicChatHalImageCell.h" #import "MSSessionPublicChatHalImageModel.h" #import "SDPhotoBrowser.h" - +#import "MessageContentChatHallHeadView.h" @interface MSSessionPublicChatHalImageCell() @property(nonatomic,strong) MSSessionPublicChatHalImageModel * imageModel; - -///当前的消息 -@property (nonatomic,strong) NIMMessage *message; - -///头饰 -@property (nonatomic,strong) YYAnimatedImageView *headWearImageView; -///头饰 -@property (nonatomic,strong) YYAnimatedImageView *rightHeadWearImageView; -///头饰播放 -@property (nonatomic, strong) SpriteSheetImageManager *manager; - -/** - 左侧头像(私聊对象) - */ -@property (nonatomic, strong) NetImageView * leftAvatar; -/** - 右侧头像(自己) - */ -@property (nonatomic, strong) NetImageView * rightAvatar; -@property(nonatomic,strong) YYLabel *leftNameView; - -@property(nonatomic,strong) UIImageView *leftBgImage; -@property(nonatomic,strong) UIImageView *rightBgImage; +@property(nonatomic,strong) MessageContentChatHallHeadView *avatarView; +@property(nonatomic,strong) UIImageView *bgImageView; ///气泡 -@property (nonatomic,strong) NetImageView *leftBubbleImageView; -///气泡 -@property (nonatomic,strong) NetImageView *rightBubbleImageView; - -@property(nonatomic,strong) NetImageView *leftPicImageView; -@property(nonatomic,strong) NetImageView *rightPicImageView; - +@property (nonatomic,strong) NetImageView *bubbleImageView; +@property(nonatomic,strong) NetImageView *picImageView; @end @implementation MSSessionPublicChatHalImageCell @@ -65,217 +39,67 @@ self.contentView.backgroundColor = [UIColor clearColor]; self.backgroundColor = [UIColor clearColor]; self.selectionStyle = 0; - [self addSubview:self.leftAvatar]; - [self addSubview:self.headWearImageView]; - [self addSubview:self.rightAvatar]; - [self addSubview:self.rightHeadWearImageView]; - [self addSubview:self.leftNameView]; - [self addSubview:self.leftBgImage]; - [self addSubview:self.rightBgImage]; - [self addSubview:self.leftBubbleImageView]; - [self addSubview:self.rightBubbleImageView]; - [self.leftBgImage addSubview:self.leftPicImageView]; - [self.rightBgImage addSubview:self.rightPicImageView]; + [self.contentView addSubview:self.avatarView]; + [self.contentView addSubview:self.bgImageView]; + [self.contentView addSubview:self.bubbleImageView]; + [self.contentView addSubview:self.picImageView]; + } -(void)installConstraints{ - [self.leftAvatar mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(kGetScaleWidth(15)); - make.width.height.mas_equalTo(kGetScaleWidth(48)); - make.top.mas_equalTo(kGetScaleWidth(10)); + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.equalTo(self.contentView); + make.height.mas_equalTo(kGetScaleWidth(48)); }]; - [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.leftAvatar).with.insets(UIEdgeInsetsMake(-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10))); - }]; - [self.leftNameView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(21)); - make.height.mas_equalTo(kGetScaleWidth(14)); - make.leading.mas_equalTo(kGetScaleWidth(72)); - make.width.mas_lessThanOrEqualTo(kGetScaleWidth(240)); - - }]; - [self.rightAvatar mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.width.height.equalTo(self.leftAvatar); - make.trailing.mas_equalTo(-kGetScaleWidth(15)); - }]; - [self.rightHeadWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.rightAvatar).with.insets(UIEdgeInsetsMake(-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10))); - }]; - [self.leftBgImage mas_makeConstraints:^(MASConstraintMaker *make) { + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.mas_equalTo(kGetScaleWidth(72)); make.width.mas_equalTo(kGetScaleWidth(52)); make.height.mas_equalTo(kGetScaleWidth(36)); - make.top.mas_equalTo(kGetScaleWidth(45)); + make.top.mas_equalTo(kGetScaleWidth(55)); }]; - [self.rightBgImage mas_makeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(-kGetScaleWidth(72)); - make.centerY.equalTo(self.rightAvatar); - make.width.mas_equalTo(kGetScaleWidth(52)); - make.height.mas_greaterThanOrEqualTo(kGetScaleWidth(36)); - }]; - - - [self.leftBubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.leftBgImage); + [self.bubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.bgImageView); }]; - [self.rightBubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.rightBgImage); - - }]; - - [self.leftPicImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.leftBgImage).with.insets(UIEdgeInsetsMake(kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10))); + [self.picImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.bgImageView).with.insets(UIEdgeInsetsMake(kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10))); }]; - [self.rightPicImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.rightBgImage).with.insets(UIEdgeInsetsMake(kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10))); - - }]; - self.leftAvatar.hidden = YES; - self.leftNameView.hidden = YES; - self.leftBgImage.hidden = YES; - self.headWearImageView.hidden = YES; - - self.leftBubbleImageView.hidden = YES; - self.rightAvatar.hidden = YES; - self.rightBgImage.hidden = YES; - self.rightHeadWearImageView.hidden = YES; - self.rightBubbleImageView.hidden = YES; } #pragma mark - 懒加载 - (void)render:(nonnull MessageBaseModel *)model { - self.message = model.message; + MSSessionPublicChatHalImageModel * imageModel = (MSSessionPublicChatHalImageModel *)model; self.imageModel = imageModel; XPMessageRemoteExtModel *extModel = imageModel.extModel; if(extModel == nil)return; - self.leftAvatar.hidden = YES; - self.leftNameView.hidden = YES; - self.leftBgImage.hidden = YES; - self.headWearImageView.hidden = YES; - self.leftPicImageView.hidden = YES; - self.rightPicImageView.hidden = YES; - self.leftBubbleImageView.hidden = YES; - self.rightAvatar.hidden = YES; - self.rightBgImage.hidden = YES; - self.rightHeadWearImageView.hidden = YES; - self.rightBubbleImageView.hidden = YES; - - if(imageModel.isSelf){ - - [self.rightPicImageView mas_updateConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(model.contentSize.height); - make.width.mas_equalTo(model.contentSize.width); - }]; - if (imageModel.image) { - self.rightPicImageView.image = imageModel.image; - }else { - [self.rightPicImageView loadImageWithUrl:imageModel.imageUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.rightPicImageView.image = image; - }]; - } - [self.rightBgImage mas_remakeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(-kGetScaleWidth(72)); - make.top.mas_equalTo(kGetScaleWidth(21)); - make.width.mas_equalTo(model.contentSize.width+kGetScaleWidth(10)); - make.height.mas_equalTo(model.contentSize.height+kGetScaleWidth(10)); - }]; - - - - self.rightAvatar.hidden = NO; - self.rightBgImage.hidden = NO; - self.rightHeadWearImageView.hidden = NO; - self.rightBubbleImageView.hidden = NO; - self.leftPicImageView.hidden = YES; - self.rightPicImageView.hidden = NO; - self.rightAvatar.image = nil; - [self.rightAvatar loadImageWithUrl:extModel.avatar completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.rightAvatar.image = image; - }]; - - self.rightBubbleImageView.image = nil; - - self.rightBgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_right")]; - [self.rightBubbleImageView loadImageWithUrl:extModel.iosBubbleUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.rightBgImage.image = nil; - UIImage *image1 = [UIImage imageWithCGImage:image.CGImage scale:2.0 orientation:UIImageOrientationUp]; - self.rightBubbleImageView.image = [self resizableImage:image1]; - }]; - NSString *headwearUrl = extModel.headwearUrl; - self.rightHeadWearImageView.image = nil; - if (headwearUrl.length > 0) { - NSURL *url = [NSURL URLWithString:headwearUrl]; - @kWeakify(self); - [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.rightHeadWearImageView.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } - return; - - } - [self.leftPicImageView mas_updateConstraints:^(MASConstraintMaker *make) { + [self.avatarView render:model]; + [self.picImageView mas_updateConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(model.contentSize.height); make.width.mas_equalTo(model.contentSize.width); }]; if (imageModel.image) { - self.leftPicImageView.image = imageModel.image; + self.picImageView.image = imageModel.image; }else { - [self.leftPicImageView loadImageWithUrl:imageModel.imageUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.leftPicImageView.image = image; + [self.picImageView loadImageWithUrl:imageModel.imageUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + self.picImageView.image = image; }]; } - [self.leftBgImage mas_remakeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(45)); + [self.bgImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(55)); make.leading.mas_equalTo(kGetScaleWidth(72)); make.width.mas_equalTo(model.contentSize.width+kGetScaleWidth(10)); make.height.mas_equalTo(model.contentSize.height+kGetScaleWidth(10)); + make.bottom.mas_equalTo(-kGetScaleWidth(10)); }]; - NSString *headwearUrl = extModel.headwearUrl; - self.headWearImageView.image = nil; - if (headwearUrl.length > 0) { - NSURL *url = [NSURL URLWithString:headwearUrl]; - @kWeakify(self); - [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.headWearImageView.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } - self.leftAvatar.hidden = NO; - self.leftNameView.hidden = NO; - self.leftBgImage.hidden = NO; - self.headWearImageView.hidden = NO; - self.leftPicImageView.hidden = NO; - self.rightPicImageView.hidden = YES; - self.leftBubbleImageView.hidden = NO; - self.leftAvatar.image = nil; - [self.leftAvatar loadImageWithUrl:extModel.avatar completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.leftAvatar.image = image; - }]; - self.leftBgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; - - [self.leftBubbleImageView loadImageWithUrl:extModel.iosBubbleUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.leftBgImage.image = nil; - - UIImage *image1 = [UIImage imageWithCGImage:image.CGImage scale:2.0 orientation:UIImageOrientationUp]; - self.leftBubbleImageView.image = [self resizableImage:image1]; - }]; - self.leftNameView.attributedText = imageModel.nameAtt; - - - - + } #pragma mark - SDPhotoBrowserDelegate - (NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index { @@ -317,110 +141,42 @@ CGFloat bottom = (image.size.height - 1) / 2; return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right) resizingMode:UIImageResizingModeStretch]; } -- (NetImageView *)leftAvatar{ - if(!_leftAvatar){ - NetImageConfig *config = [NetImageConfig new]; - config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; - _leftAvatar = [[NetImageView alloc]initWithConfig:config]; - _leftAvatar.layer.cornerRadius = kGetScaleWidth(48)/2; - _leftAvatar.layer.masksToBounds = YES; +- (MessageContentChatHallHeadView *)avatarView{ + if(!_avatarView){ + _avatarView = [[MessageContentChatHallHeadView alloc]initWithFrame:CGRectZero isSelf:NO]; } - return _leftAvatar; -} -- (NetImageView *)rightAvatar{ - if(!_rightAvatar){ - NetImageConfig *config = [NetImageConfig new]; - config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; - _rightAvatar = [[NetImageView alloc]initWithConfig:config]; - _rightAvatar.layer.cornerRadius = kGetScaleWidth(48)/2; - _rightAvatar.layer.masksToBounds = YES; - } - return _rightAvatar; -} -- (YYLabel *)leftNameView{ - if(!_leftNameView){ - _leftNameView = [YYLabel new]; - } - return _leftNameView; + return _avatarView; } -- (UIImageView *)leftBgImage{ - if(!_leftBgImage){ - _leftBgImage = [UIImageView new]; - _leftBgImage.userInteractionEnabled = YES; - _leftBgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; +- (UIImageView *)bgImageView{ + if(!_bgImageView){ + _bgImageView = [UIImageView new]; + _bgImageView.userInteractionEnabled = YES; + _bgImageView.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; } - return _leftBgImage; + return _bgImageView; } -- (UIImageView *)rightBgImage{ - if(!_rightBgImage){ - _rightBgImage = [UIImageView new]; - _rightBgImage.userInteractionEnabled = YES; - _rightBgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_right")]; - } - return _rightBgImage; -} -- (NetImageView *)leftBubbleImageView{ - if(!_leftBubbleImageView){ - _leftBubbleImageView = [[NetImageView alloc] init]; + +- (NetImageView *)bubbleImageView{ + if(!_bubbleImageView){ + _bubbleImageView = [[NetImageView alloc] init]; } - return _leftBubbleImageView; + return _bubbleImageView; } -- (NetImageView *)rightBubbleImageView{ - if(!_rightBubbleImageView){ - _rightBubbleImageView = [[NetImageView alloc] init]; - - - - } - return _rightBubbleImageView; -} - - -- (YYAnimatedImageView *)headWearImageView { - if (!_headWearImageView) { - _headWearImageView = [[YYAnimatedImageView alloc] init]; - _headWearImageView.backgroundColor = [UIColor clearColor]; - _headWearImageView.contentMode = UIViewContentModeScaleAspectFit; - } - return _headWearImageView; -} -- (YYAnimatedImageView *)rightHeadWearImageView { - if (!_rightHeadWearImageView) { - _rightHeadWearImageView = [[YYAnimatedImageView alloc] init]; - _rightHeadWearImageView.backgroundColor = [UIColor clearColor]; - _rightHeadWearImageView.contentMode = UIViewContentModeScaleAspectFit; - - } - return _rightHeadWearImageView; -} -- (SpriteSheetImageManager *)manager { - if (!_manager) { - _manager = [[SpriteSheetImageManager alloc] init]; - } - return _manager; -} -- (NetImageView *)leftPicImageView{ - if(!_leftPicImageView){ - _leftPicImageView = [NetImageView new]; - _leftPicImageView.userInteractionEnabled = YES; - _leftPicImageView.layer.masksToBounds = YES; - _leftPicImageView.contentMode = UIViewContentModeScaleAspectFill; +- (NetImageView *)picImageView{ + if(!_picImageView){ + NetImageConfig *config = [NetImageConfig new]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _picImageView = [[NetImageView alloc]initWithConfig:config]; + _picImageView.userInteractionEnabled = YES; + _picImageView.layer.cornerRadius = kGetScaleWidth(8); + _picImageView.layer.masksToBounds = YES; + _picImageView.contentMode = UIViewContentModeScaleAspectFill; UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didLeftTapImage)]; - [_leftPicImageView addGestureRecognizer:tap]; + [_picImageView addGestureRecognizer:tap]; } - return _leftPicImageView; -} -- (NetImageView *)rightPicImageView{ - if(!_rightPicImageView){ - _rightPicImageView = [NetImageView new]; - _rightPicImageView.userInteractionEnabled = YES; - _rightPicImageView.layer.masksToBounds = YES; - _rightPicImageView.contentMode = UIViewContentModeScaleAspectFill; - UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didRigthTapImage)]; - [_rightPicImageView addGestureRecognizer:tap]; - } - return _rightPicImageView; + return _picImageView; } + @end diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalRightTextCell.h b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalRightTextCell.h new file mode 100644 index 00000000..98f547ac --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalRightTextCell.h @@ -0,0 +1,16 @@ +// +// MSSessionPublicChatHalRightTextCell.h +// YuMi +// +// Created by duoban on 2024/5/16. +// + +#import +#import "MessageBaseModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MSSessionPublicChatHalRightTextCell : UITableViewCell +- (void)render:(nonnull MessageBaseModel *)model ; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalRightTextCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalRightTextCell.m new file mode 100644 index 00000000..dedd9f57 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalRightTextCell.m @@ -0,0 +1,167 @@ +// +// MSSessionPublicChatHalRightTextCell.m +// YuMi +// +// Created by duoban on 2024/5/16. +// + +#import "DJDKMIMOMColor.h" +#import "NSObject+MJExtension.h" +#import "QEmotionHelper.h" +#import +#import +#import "SpriteSheetImageManager.h" +#import "MessageHeadlinesTextModel.h" +#import "XPMessageRemoteExtModel.h" +#import "MessageContentChatHallHeadView.h" +#import "MSSessionPublicChatHalRightTextCell.h" + +@interface MSSessionPublicChatHalRightTextCell() +/** + 消息文本 + */ + +@property (nonatomic, strong) YYLabel * messageText; + + + + +@property(nonatomic,strong) UIImageView *bgImage; + +///气泡 +@property (nonatomic,strong) NetImageView *bubbleImageView; +@property(nonatomic,strong) MessageContentChatHallHeadView *avatarView; +@end +@implementation MSSessionPublicChatHalRightTextCell +-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if(self){ + [self installUI]; + [self installConstraints]; + } + return self; +} +- (void)render:(nonnull MessageBaseModel *)model { + MessageHeadlinesTextModel * textModel = (MessageHeadlinesTextModel *)model; + XPMessageRemoteExtModel *extModel = textModel.extModel; + if(extModel == nil)return; + [self.avatarView render:model]; + self.messageText.attributedText = textModel.textAttribute; + self.bubbleImageView.image = nil; + self.bgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_right")]; + NSString *iosBubbleUrl = extModel.iosBubbleUrl; + if(iosBubbleUrl.length > 0){ + [self.bubbleImageView loadImageWithUrl:extModel.iosBubbleUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + self.bgImage.image = nil; + UIImage *image1 = [UIImage imageWithCGImage:image.CGImage scale:2.0 orientation:UIImageOrientationUp]; + self.bubbleImageView.image = [self resizableImage:image1]; + }]; + } +} +-(void)installUI{ + self.contentView.backgroundColor = [UIColor clearColor]; + self.backgroundColor = [UIColor clearColor]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + + + [self.contentView addSubview:self.avatarView]; + [self.contentView addSubview:self.bgImage]; + [self.contentView addSubview:self.bubbleImageView]; + [self.contentView addSubview:self.messageText]; + + + + +} +-(void)installConstraints{ + + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.equalTo(self.contentView); + make.height.mas_equalTo(kGetScaleWidth(48)); + }]; + + + [self.bgImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.messageText).offset(-kGetScaleWidth(10)); + make.top.equalTo(self.messageText).offset(-kGetScaleWidth(10)); + make.bottom.mas_equalTo(self.messageText).offset(kGetScaleWidth(10)); + make.right.mas_equalTo(self.messageText).offset(kGetScaleWidth(10)); + }]; + [self.messageText mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(55)); + make.trailing.mas_equalTo(-kGetScaleWidth(82)); + make.bottom.mas_equalTo(-kGetScaleWidth(10)); + + }]; + + + [self.bubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.bgImage); + + }]; + + +} +#pragma mark - 懒加载 +- (UIImage*)resizableImage:(UIImage *)image { + //图片拉伸区域 + CGFloat top = (image.size.height - 1) / 2; + CGFloat left = (image.size.width - 1) / 2; + CGFloat right = (image.size.width - 1) / 2; + CGFloat bottom = (image.size.height - 1) / 2; + return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right) resizingMode:UIImageResizingModeStretch]; +} + +- (UIImageView *)bgImage{ + if(!_bgImage){ + _bgImage = [UIImageView new]; + _bgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_right")]; + } + return _bgImage; +} + +- (NetImageView *)bubbleImageView{ + if(!_bubbleImageView){ + _bubbleImageView = [[NetImageView alloc] init]; + + + + } + return _bubbleImageView; +} +- (YYLabel *)messageText { + if (!_messageText) { + _messageText = [[YYLabel alloc]initWithFrame:CGRectZero]; + + _messageText.textColor = DJDKMIMOMColor.mainTextColor; + _messageText.numberOfLines = 0; + _messageText.font = kFontMedium(14); + _messageText.textColor = [UIColor whiteColor]; + _messageText.textAlignment = NSTextAlignmentLeft; + _messageText.userInteractionEnabled = YES; + _messageText.preferredMaxLayoutWidth = kGetScaleWidth(220); + } + return _messageText; +} + + +- (MessageContentChatHallHeadView *)avatarView{ + if(!_avatarView){ + _avatarView = [[MessageContentChatHallHeadView alloc]initWithFrame:CGRectZero isSelf:YES]; + } + return _avatarView; +} + + +- (void)awakeFromNib { + [super awakeFromNib]; + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalTextCell.m b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalTextCell.m index adc70240..4d7d7046 100644 --- a/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalTextCell.m +++ b/YuMi/Modules/YMMessage/View/Session/Cell/MSSessionPublicChatHalTextCell.m @@ -6,9 +6,25 @@ // #import "MSSessionPublicChatHalTextCell.h" -#import "MessageContentHeadLinesText.h" + +#import "DJDKMIMOMColor.h" +#import "NSObject+MJExtension.h" +#import "QEmotionHelper.h" +#import +#import +#import "SpriteSheetImageManager.h" +#import "MessageHeadlinesTextModel.h" +#import "XPMessageRemoteExtModel.h" +#import "MessageContentChatHallHeadView.h" @interface MSSessionPublicChatHalTextCell () -@property(nonatomic,strong) MessageContentHeadLinesText *textView; +/** + 消息文本 + */ +@property (nonatomic, strong) YYLabel * messageText; +@property(nonatomic,strong) UIImageView *bgImage; +///气泡 +@property (nonatomic,strong) NetImageView *bubbleImageView; +@property(nonatomic,strong) MessageContentChatHallHeadView *avatarView; @end @implementation MSSessionPublicChatHalTextCell @@ -21,26 +37,113 @@ return self; } - (void)render:(nonnull MessageBaseModel *)model { - [self.textView render:model]; + + MessageHeadlinesTextModel * textModel = (MessageHeadlinesTextModel *)model; + XPMessageRemoteExtModel *extModel = textModel.extModel; + if(extModel == nil)return; + [self.avatarView render:model]; + self.messageText.textColor = [UIColor whiteColor]; + self.bubbleImageView.image = nil; + NSString *iosBubbleUrl = extModel.iosBubbleUrl; + _bgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; + if(iosBubbleUrl.length > 0){ + [self.bubbleImageView loadImageWithUrl:extModel.iosBubbleUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + self.bgImage.image = nil; + self.messageText.textColor = UIColorFromRGB(0x333333); + UIImage *image1 = [UIImage imageWithCGImage:image.CGImage scale:2.0 orientation:UIImageOrientationUp]; + self.bubbleImageView.image = [self resizableImage:image1]; + }]; + } + self.messageText.attributedText = textModel.textAttribute; } -(void)installUI{ self.contentView.backgroundColor = [UIColor clearColor]; self.backgroundColor = [UIColor clearColor]; - self.selectionStyle = 0; - [self.contentView addSubview:self.textView]; + self.selectionStyle = UITableViewCellSelectionStyleNone; + [self.contentView addSubview:self.avatarView]; + [self.contentView addSubview:self.bgImage]; + [self.contentView addSubview:self.bubbleImageView]; + [self.contentView addSubview:self.messageText]; } -(void)installConstraints{ - [self.textView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.contentView); + + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.top.equalTo(self.contentView); + make.height.mas_equalTo(kGetScaleWidth(48)); }]; + [self.messageText mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(55)); + make.leading.mas_equalTo(kGetScaleWidth(82)); + make.bottom.mas_equalTo(-kGetScaleWidth(10)); + }]; + [self.bgImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.messageText).offset(-kGetScaleWidth(10)); + make.top.equalTo(self.messageText).offset(-kGetScaleWidth(10)); + make.bottom.mas_equalTo(self.messageText).offset(kGetScaleWidth(10)); + make.right.mas_equalTo(self.messageText).offset(kGetScaleWidth(10)); + }]; + + + [self.bubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.bgImage); + }]; + + + + + } #pragma mark - 懒加载 -- (MessageContentHeadLinesText *)textView{ - if(!_textView){ - _textView = [[MessageContentHeadLinesText alloc]initWithFrame:CGRectZero]; - } - return _textView; +- (UIImage*)resizableImage:(UIImage *)image { + //图片拉伸区域 + CGFloat top = (image.size.height - 1) / 2; + CGFloat left = (image.size.width - 1) / 2; + CGFloat right = (image.size.width - 1) / 2; + CGFloat bottom = (image.size.height - 1) / 2; + return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right) resizingMode:UIImageResizingModeStretch]; } + + +- (UIImageView *)bgImage{ + if(!_bgImage){ + _bgImage = [UIImageView new]; + _bgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; + } + return _bgImage; +} + +- (NetImageView *)bubbleImageView{ + if(!_bubbleImageView){ + _bubbleImageView = [[NetImageView alloc] init]; + + } + return _bubbleImageView; +} + +- (YYLabel *)messageText { + if (!_messageText) { + _messageText = [[YYLabel alloc]initWithFrame:CGRectZero]; + + _messageText.textColor = DJDKMIMOMColor.mainTextColor; + _messageText.numberOfLines = 0; + _messageText.font = kFontMedium(14); + _messageText.textColor = [UIColor whiteColor]; + _messageText.textAlignment = NSTextAlignmentLeft; + _messageText.userInteractionEnabled = YES; + _messageText.preferredMaxLayoutWidth = kGetScaleWidth(220); + } + return _messageText; +} + + +- (MessageContentChatHallHeadView *)avatarView{ + if(!_avatarView){ + _avatarView = [[MessageContentChatHallHeadView alloc]initWithFrame:CGRectZero isSelf:NO]; + } + return _avatarView; +} + + - (void)awakeFromNib { [super awakeFromNib]; // Initialization code @@ -48,7 +151,7 @@ - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; - + // Configure the view for the selected state } diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentChatHallHeadView.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentChatHallHeadView.h new file mode 100644 index 00000000..833519d9 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentChatHallHeadView.h @@ -0,0 +1,17 @@ +// +// MessageContentChatHallHeadView.h +// YuMi +// +// Created by duoban on 2024/5/16. +// + +#import +#import "MessageBaseModel.h" +NS_ASSUME_NONNULL_BEGIN + +@interface MessageContentChatHallHeadView : UIView +-(instancetype)initWithFrame:(CGRect)frame isSelf:(BOOL)isSelf; +- (void)render:(nonnull MessageBaseModel *)model; +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentChatHallHeadView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentChatHallHeadView.m new file mode 100644 index 00000000..e8e42ff9 --- /dev/null +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentChatHallHeadView.m @@ -0,0 +1,196 @@ +// +// MessageContentChatHallHeadView.m +// YuMi +// +// Created by duoban on 2024/5/16. +// + +#import "MessageContentChatHallHeadView.h" +#import "DJDKMIMOMColor.h" +#import "NSObject+MJExtension.h" +#import "QEmotionHelper.h" +#import +#import +#import "SpriteSheetImageManager.h" +#import "MessageHeadlinesTextModel.h" +#import "XPMessageRemoteExtModel.h" +#import "MSSessionPublicChatHalImageModel.h" +@interface MessageContentChatHallHeadView() +@property(nonatomic,assign) BOOL isSelf; +///头饰 +@property (nonatomic,strong) YYAnimatedImageView *headWearImageView; +///头饰播放 +@property (nonatomic, strong) SpriteSheetImageManager *manager; +/** + 左侧头像(私聊对象) + */ +@property (nonatomic, strong) NetImageView * avatarView; + +@property(nonatomic,strong) UILabel *nameView; + +@property(nonatomic,strong) NetImageView *experImage; +@property(nonatomic,strong) NetImageView *charmImage; + +@end +@implementation MessageContentChatHallHeadView + +-(instancetype)initWithFrame:(CGRect)frame isSelf:(BOOL)isSelf{ + self = [super initWithFrame:frame]; + if(self){ + self.isSelf = isSelf; + [self installUI]; + [self installConstraints]; + } + return self; +} +-(void)installUI{ + [self addSubview:self.avatarView]; + [self addSubview:self.headWearImageView]; + [self addSubview:self.nameView]; + [self addSubview:self.experImage]; + [self addSubview:self.charmImage]; +} +-(void)installConstraints{ + if(self.isSelf){ + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-kGetScaleWidth(15)); + make.width.height.mas_equalTo(kGetScaleWidth(48)); + make.top.mas_equalTo(kGetScaleWidth(10)); + }]; + [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.avatarView).with.insets(UIEdgeInsetsMake(-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10))); + }]; + [self.nameView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(21)); + make.height.mas_equalTo(kGetScaleWidth(18)); + make.trailing.mas_equalTo(-kGetScaleWidth(72)); + make.leading.equalTo(self.experImage.mas_trailing).mas_offset(kGetScaleWidth(4)); + + }]; + [self.experImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(36)); + make.height.mas_equalTo(kGetScaleWidth(18)); + make.leading.equalTo(self.charmImage.mas_trailing).mas_offset(kGetScaleWidth(4)); + make.centerY.equalTo(self.nameView); + }]; + [self.charmImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(36)); + make.height.mas_equalTo(kGetScaleWidth(18)); + make.leading.mas_greaterThanOrEqualTo(kGetScaleWidth(kGetScaleWidth(64))); + make.centerY.equalTo(self.nameView); + }]; + return; + } + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(15)); + make.width.height.mas_equalTo(kGetScaleWidth(48)); + make.top.mas_equalTo(kGetScaleWidth(10)); + }]; + [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.avatarView).with.insets(UIEdgeInsetsMake(-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10))); + }]; + [self.nameView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(21)); + make.height.mas_equalTo(kGetScaleWidth(18)); + make.leading.mas_equalTo(kGetScaleWidth(72)); + make.trailing.equalTo(self.experImage.mas_leading).mas_offset(-kGetScaleWidth(4)); + + }]; + [self.experImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(36)); + make.height.mas_equalTo(kGetScaleWidth(18)); + make.trailing.equalTo(self.charmImage.mas_leading).mas_offset(-kGetScaleWidth(4)); + make.centerY.equalTo(self.nameView); + }]; + [self.charmImage mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(kGetScaleWidth(36)); + make.height.mas_equalTo(kGetScaleWidth(18)); + make.trailing.mas_lessThanOrEqualTo(-kGetScaleWidth(64)); + make.centerY.equalTo(self.nameView); + }]; +} + +- (void)render:(nonnull MessageBaseModel *)model { + XPMessageRemoteExtModel *extModel ; + if([model isKindOfClass:[MSSessionPublicChatHalImageModel class]]){ + MSSessionPublicChatHalImageModel *imageModel = (MSSessionPublicChatHalImageModel *)model; + extModel = imageModel.extModel; + }else{ + MessageHeadlinesTextModel * textModel = (MessageHeadlinesTextModel *)model; + extModel = textModel.extModel; + } + + if(extModel == nil)return; + self.avatarView.image = nil; + [self.avatarView loadImageWithUrl:extModel.avatar completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + self.avatarView.image = image; + }]; + self.experImage.image = nil; + [self.experImage loadImageWithUrl:extModel.experUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + self.experImage.image = image; + }]; + self.charmImage.image = nil; + [self.charmImage loadImageWithUrl:extModel.charmUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + self.charmImage.image = image; + }]; + self.nameView.text = extModel.nick; + self.headWearImageView.image = nil; + NSString *headwearUrl = extModel.headwearUrl; + if (headwearUrl.length > 0) { + NSURL *url = [NSURL URLWithString:headwearUrl]; + @kWeakify(self); + [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { + @kStrongify(self); + self.headWearImageView.image = sprit; + } failureBlock:^(NSError * _Nullable error) { + }]; + } + +} + +#pragma mark - 懒加载 +- (NetImageView *)avatarView{ + if(!_avatarView){ + NetImageConfig *config = [NetImageConfig new]; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarView = [[NetImageView alloc]initWithConfig:config]; + _avatarView.layer.cornerRadius = kGetScaleWidth(48)/2; + _avatarView.layer.masksToBounds = YES; + } + return _avatarView; +} + +- (UILabel *)nameView{ + if(!_nameView){ + _nameView = [UILabel labelInitWithText:@"" font:kFontBold(14) textColor:UIColorFromRGB(0x333333)]; + _nameView.lineBreakMode = self.isSelf ? NSLineBreakByTruncatingHead : NSLineBreakByTruncatingTail; + } + return _nameView; +} +- (YYAnimatedImageView *)headWearImageView { + if (!_headWearImageView) { + _headWearImageView = [[YYAnimatedImageView alloc] init]; + _headWearImageView.backgroundColor = [UIColor clearColor]; + _headWearImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _headWearImageView; +} +- (SpriteSheetImageManager *)manager { + if (!_manager) { + _manager = [[SpriteSheetImageManager alloc] init]; + } + return _manager; +} +- (NetImageView *)experImage{ + if(!_experImage){ + _experImage = [NetImageView new]; + } + return _experImage; +} +- (NetImageView *)charmImage{ + if(!_charmImage){ + _charmImage = [NetImageView new]; + } + return _charmImage; +} +@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentHeadLinesText.h b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentHeadLinesText.h deleted file mode 100644 index 6b7d58e5..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentHeadLinesText.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// MessageContentHeadLinesText.h -// YuMi -// -// Created by duoban on 2024/5/9. -// - -#import -#import "MessageBaseModel.h" -NS_ASSUME_NONNULL_BEGIN - -@interface MessageContentHeadLinesText : UIView -- (void)render:(nonnull MessageBaseModel *)model; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentHeadLinesText.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentHeadLinesText.m deleted file mode 100644 index 95c525b8..00000000 --- a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentHeadLinesText.m +++ /dev/null @@ -1,346 +0,0 @@ -// -// MessageContentHeadLinesText.m -// YuMi -// -// Created by duoban on 2024/5/9. -// - -#import "MessageContentHeadLinesText.h" -#import "DJDKMIMOMColor.h" -#import "NSObject+MJExtension.h" -#import "QEmotionHelper.h" -#import -#import -#import "SpriteSheetImageManager.h" -#import "MessageHeadlinesTextModel.h" -#import "XPMessageRemoteExtModel.h" - -#define MESSAGE_TEXT_PADDING 10 -@interface MessageContentHeadLinesText() -/** - 消息文本 - */ -@property (nonatomic, strong) YYLabel * messageText; -@property (nonatomic, strong) YYLabel * rightMessageText; -///当前的消息 -@property (nonatomic,strong) NIMMessage *message; - -///头饰 -@property (nonatomic,strong) YYAnimatedImageView *headWearImageView; -///头饰 -@property (nonatomic,strong) YYAnimatedImageView *rightHeadWearImageView; -///头饰播放 -@property (nonatomic, strong) SpriteSheetImageManager *manager; - -/** - 左侧头像(私聊对象) - */ -@property (nonatomic, strong) NetImageView * leftAvatar; -/** - 右侧头像(自己) - */ -@property (nonatomic, strong) NetImageView * rightAvatar; -@property(nonatomic,strong) YYLabel *leftNameView; - -@property(nonatomic,strong) UIImageView *leftBgImage; -@property(nonatomic,strong) UIImageView *rightBgImage; -///气泡 -@property (nonatomic,strong) NetImageView *leftBubbleImageView; -///气泡 -@property (nonatomic,strong) NetImageView *rightBubbleImageView; -@end -@implementation MessageContentHeadLinesText - -- (instancetype)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self addSubview:self.leftAvatar]; - [self addSubview:self.headWearImageView]; - [self addSubview:self.rightAvatar]; - [self addSubview:self.rightHeadWearImageView]; - [self addSubview:self.leftNameView]; - [self addSubview:self.leftBgImage]; - [self addSubview:self.rightBgImage]; - [self addSubview:self.leftBubbleImageView]; - [self addSubview:self.rightBubbleImageView]; - [self.leftBgImage addSubview:self.messageText]; - [self.rightBgImage addSubview:self.rightMessageText]; - - [self.leftAvatar mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(kGetScaleWidth(15)); - make.width.height.mas_equalTo(kGetScaleWidth(48)); - make.top.mas_equalTo(kGetScaleWidth(10)); - }]; - [self.headWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.leftAvatar).with.insets(UIEdgeInsetsMake(-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10))); - }]; - [self.leftNameView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.mas_equalTo(kGetScaleWidth(21)); - make.height.mas_equalTo(kGetScaleWidth(14)); - make.leading.mas_equalTo(kGetScaleWidth(71.5)); - make.width.mas_lessThanOrEqualTo(kGetScaleWidth(240)); - - }]; - [self.rightAvatar mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.width.height.equalTo(self.leftAvatar); - make.trailing.mas_equalTo(-kGetScaleWidth(15)); - }]; - [self.rightHeadWearImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.rightAvatar).with.insets(UIEdgeInsetsMake(-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10),-kGetScaleWidth(10))); - }]; - [self.leftBgImage mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(kGetScaleWidth(72)); - make.width.mas_equalTo(kGetScaleWidth(52)); - make.height.mas_equalTo(kGetScaleWidth(36)); - make.top.mas_equalTo(kGetScaleWidth(45)); - }]; - [self.rightBgImage mas_makeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(-kGetScaleWidth(72)); - make.top.mas_equalTo(kGetScaleWidth(21)); - make.width.mas_equalTo(kGetScaleWidth(52)); - make.height.mas_greaterThanOrEqualTo(kGetScaleWidth(36)); - }]; - - - [self.leftBubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.leftBgImage); - }]; - [self.messageText mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.leftBgImage).with.insets(UIEdgeInsetsMake(kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10))); - }]; - [self.rightBubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.rightBgImage); - - }]; - - [self.rightMessageText mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.rightBgImage).with.insets(UIEdgeInsetsMake(kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10),kGetScaleWidth(10))); - - }]; - self.leftAvatar.hidden = YES; - self.leftNameView.hidden = YES; - self.leftBgImage.hidden = YES; - self.headWearImageView.hidden = YES; - self.messageText.hidden = YES; - self.leftBubbleImageView.hidden = YES; - self.rightAvatar.hidden = YES; - self.rightBgImage.hidden = YES; - self.rightHeadWearImageView.hidden = YES; - self.rightBubbleImageView.hidden = YES; - self.rightMessageText.hidden = YES; - } - return self; -} - -- (void)render:(nonnull MessageBaseModel *)model { - self.message = model.message; - - - MessageHeadlinesTextModel * textModel = (MessageHeadlinesTextModel *)model; - XPMessageRemoteExtModel *extModel = textModel.extModel; - if(extModel == nil)return; - self.leftAvatar.hidden = YES; - self.leftNameView.hidden = YES; - self.leftBgImage.hidden = YES; - self.headWearImageView.hidden = YES; - self.messageText.hidden = YES; - self.leftBubbleImageView.hidden = YES; - self.rightAvatar.hidden = YES; - self.rightBgImage.hidden = YES; - self.rightHeadWearImageView.hidden = YES; - self.rightBubbleImageView.hidden = YES; - self.rightMessageText.hidden = YES; - if(textModel.isSelf){ - [self.rightBgImage mas_remakeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(-kGetScaleWidth(72)); - make.top.mas_equalTo(kGetScaleWidth(21)); - make.width.mas_equalTo(textModel.width); - make.height.mas_equalTo(textModel.imageHeight); - }]; - self.rightAvatar.hidden = NO; - self.rightBgImage.hidden = NO; - self.rightHeadWearImageView.hidden = NO; - self.rightBubbleImageView.hidden = NO; - self.rightMessageText.hidden = NO; - self.rightAvatar.image = nil; - [self.rightAvatar loadImageWithUrl:extModel.avatar completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.rightAvatar.image = image; - }]; - self.rightMessageText.attributedText = textModel.textAttribute; - self.rightBubbleImageView.image = nil; - - self.rightBgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_right")]; - [self.rightBubbleImageView loadImageWithUrl:extModel.iosBubbleUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.rightBgImage.image = nil; - UIImage *image1 = [UIImage imageWithCGImage:image.CGImage scale:2.0 orientation:UIImageOrientationUp]; - self.rightBubbleImageView.image = [self resizableImage:image1]; - }]; - NSString *headwearUrl = extModel.headwearUrl; - self.rightHeadWearImageView.image = nil; - if (headwearUrl.length > 0) { - NSURL *url = [NSURL URLWithString:headwearUrl]; - @kWeakify(self); - [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.rightHeadWearImageView.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } - return; - - } - [self.leftBgImage mas_remakeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(kGetScaleWidth(72)); - make.width.mas_equalTo(textModel.width); - make.height.mas_equalTo(textModel.imageHeight); - make.top.mas_equalTo(kGetScaleWidth(45)); - }]; - NSString *headwearUrl = extModel.headwearUrl; - self.headWearImageView.image = nil; - - if (headwearUrl.length > 0) { - NSURL *url = [NSURL URLWithString:headwearUrl]; - @kWeakify(self); - [self.manager loadSpriteSheetImageWithURL:url completionBlock:^(YYSpriteSheetImage * _Nullable sprit) { - @kStrongify(self); - self.headWearImageView.image = sprit; - } failureBlock:^(NSError * _Nullable error) { - }]; - } - self.leftAvatar.hidden = NO; - self.leftNameView.hidden = NO; - self.leftBgImage.hidden = NO; - self.headWearImageView.hidden = NO; - self.messageText.hidden = NO; - self.leftBubbleImageView.hidden = NO; - self.leftAvatar.image = nil; - [self.leftAvatar loadImageWithUrl:extModel.avatar completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.leftAvatar.image = image; - }]; - self.leftBgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; - self.messageText.textColor = [UIColor whiteColor]; - self.leftBubbleImageView.image = nil; - [self.leftBubbleImageView loadImageWithUrl:extModel.iosBubbleUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.leftBgImage.image = nil; - self.messageText.textColor = UIColorFromRGB(0x333333); - UIImage *image1 = [UIImage imageWithCGImage:image.CGImage scale:2.0 orientation:UIImageOrientationUp]; - self.leftBubbleImageView.image = [self resizableImage:image1]; - }]; - self.leftNameView.attributedText = textModel.nameAtt; - self.messageText.attributedText = textModel.textAttribute; -} -- (UIImage*)resizableImage:(UIImage *)image { - //图片拉伸区域 - CGFloat top = (image.size.height - 1) / 2; - CGFloat left = (image.size.width - 1) / 2; - CGFloat right = (image.size.width - 1) / 2; - CGFloat bottom = (image.size.height - 1) / 2; - return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right) resizingMode:UIImageResizingModeStretch]; -} -- (NetImageView *)leftAvatar{ - if(!_leftAvatar){ - NetImageConfig *config = [NetImageConfig new]; - config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; - _leftAvatar = [[NetImageView alloc]initWithConfig:config]; - _leftAvatar.layer.cornerRadius = kGetScaleWidth(48)/2; - _leftAvatar.layer.masksToBounds = YES; - } - return _leftAvatar; -} -- (NetImageView *)rightAvatar{ - if(!_rightAvatar){ - NetImageConfig *config = [NetImageConfig new]; - config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; - _rightAvatar = [[NetImageView alloc]initWithConfig:config]; - _rightAvatar.layer.cornerRadius = kGetScaleWidth(48)/2; - _rightAvatar.layer.masksToBounds = YES; - } - return _rightAvatar; -} -- (YYLabel *)leftNameView{ - if(!_leftNameView){ - _leftNameView = [YYLabel new]; - } - return _leftNameView; -} - -- (UIImageView *)leftBgImage{ - if(!_leftBgImage){ - _leftBgImage = [UIImageView new]; - _leftBgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; - } - return _leftBgImage; -} -- (UIImageView *)rightBgImage{ - if(!_rightBgImage){ - _rightBgImage = [UIImageView new]; - _rightBgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_right")]; - } - return _rightBgImage; -} -- (NetImageView *)leftBubbleImageView{ - if(!_leftBubbleImageView){ - _leftBubbleImageView = [[NetImageView alloc] init]; - - } - return _leftBubbleImageView; -} -- (NetImageView *)rightBubbleImageView{ - if(!_rightBubbleImageView){ - _rightBubbleImageView = [[NetImageView alloc] init]; - - - - } - return _rightBubbleImageView; -} -- (YYLabel *)messageText { - if (!_messageText) { - _messageText = [[YYLabel alloc]initWithFrame:CGRectZero]; - _messageText.preferredMaxLayoutWidth = kGetScaleWidth(240); - _messageText.textColor = DJDKMIMOMColor.mainTextColor; - _messageText.numberOfLines = 0; - _messageText.font = kFontMedium(14); - _messageText.textColor = [UIColor whiteColor]; - _messageText.textAlignment = NSTextAlignmentLeft; - _messageText.userInteractionEnabled = YES; - } - return _messageText; -} -- (YYLabel *)rightMessageText{ - if(!_rightMessageText){ - _rightMessageText = [[YYLabel alloc]initWithFrame:CGRectZero]; - _rightMessageText.preferredMaxLayoutWidth = kGetScaleWidth(240); - _rightMessageText.textColor = DJDKMIMOMColor.mainTextColor; - _rightMessageText.numberOfLines = 0; - _rightMessageText.font = kFontMedium(14); - _rightMessageText.textColor = UIColorFromRGB(0x333333); - _rightMessageText.textAlignment = NSTextAlignmentLeft; - _rightMessageText.userInteractionEnabled = YES; - } - return _rightMessageText; -} -- (YYAnimatedImageView *)headWearImageView { - if (!_headWearImageView) { - _headWearImageView = [[YYAnimatedImageView alloc] init]; - _headWearImageView.backgroundColor = [UIColor clearColor]; - _headWearImageView.contentMode = UIViewContentModeScaleAspectFit; - } - return _headWearImageView; -} -- (YYAnimatedImageView *)rightHeadWearImageView { - if (!_rightHeadWearImageView) { - _rightHeadWearImageView = [[YYAnimatedImageView alloc] init]; - _rightHeadWearImageView.backgroundColor = [UIColor clearColor]; - _rightHeadWearImageView.contentMode = UIViewContentModeScaleAspectFit; - } - return _rightHeadWearImageView; -} -- (SpriteSheetImageManager *)manager { - if (!_manager) { - _manager = [[SpriteSheetImageManager alloc] init]; - } - return _manager; -} - -@end diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MSSessionPublicChatHalImageModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MSSessionPublicChatHalImageModel.h index c0f8f85e..cf7f33ed 100644 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MSSessionPublicChatHalImageModel.h +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MSSessionPublicChatHalImageModel.h @@ -10,7 +10,6 @@ NS_ASSUME_NONNULL_BEGIN @interface MSSessionPublicChatHalImageModel : MessageBaseModel -@property(nonatomic,strong) NSMutableAttributedString *nameAtt; @property(nonatomic,assign) BOOL isSelf ; @property(nonatomic,strong) XPMessageRemoteExtModel *extModel; @property (nonatomic,strong) UIImage *image; diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MSSessionPublicChatHalImageModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MSSessionPublicChatHalImageModel.m index ef69ba52..9f8afbb8 100644 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MSSessionPublicChatHalImageModel.m +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MSSessionPublicChatHalImageModel.m @@ -15,17 +15,6 @@ XPMessageRemoteExtModel *extModel = [XPMessageRemoteExtModel modelWithJSON:message.remoteExt[message.from]]; self.extModel = extModel; self.isSelf = [[NIMSDK sharedSDK].loginManager.currentAccount isEqualToString:message.from]; - NSString *name = extModel.nick.length > 6 ? [NSString stringWithFormat:@"%@...",[extModel.nick substringToIndex:6]] : extModel.nick; - self.nameAtt = [self createTextAttribute:name color:UIColorFromRGB(0x333333) font:kFontBold(14)]; - [self.nameAtt appendAttributedString:[self createSapceAttribute:2]]; - if (extModel.experUrl) { - [self.nameAtt appendAttributedString:[self createUrlImageAttribute:extModel.experUrl size:CGSizeMake(kGetScaleWidth(36), kGetScaleWidth(18))]]; - [self.nameAtt appendAttributedString:[self createSapceAttribute:2]]; - } - if (extModel.charmUrl) { - [self.nameAtt appendAttributedString:[self createUrlImageAttribute:extModel.charmUrl size:CGSizeMake(kGetScaleWidth(36), kGetScaleWidth(18))]]; - [self.nameAtt appendAttributedString:[self createSapceAttribute:2]]; - } NIMImageObject * imageObject = (NIMImageObject*)message.messageObject; CGFloat attachmentImageMinWidth = (MESSAGE_IMAGE_Min_SIZE); CGFloat attachmentImageMinHeight = (MESSAGE_IMAGE_Min_SIZE); diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageHeadlinesTextModel.h b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageHeadlinesTextModel.h index 8badf16a..48873363 100644 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageHeadlinesTextModel.h +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageHeadlinesTextModel.h @@ -12,7 +12,6 @@ NS_ASSUME_NONNULL_BEGIN @interface MessageHeadlinesTextModel : MessageBaseModel ///富文本 @property (nonatomic,strong) NSAttributedString *textAttribute; -@property(nonatomic,strong) NSMutableAttributedString *nameAtt; @property(nonatomic,assign) BOOL isSelf ; @property(nonatomic,strong) XPMessageRemoteExtModel *extModel; @property(nonatomic,assign) CGFloat width; diff --git a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageHeadlinesTextModel.m b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageHeadlinesTextModel.m index 57be58fb..089c9e6e 100644 --- a/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageHeadlinesTextModel.m +++ b/YuMi/Modules/YMMessage/View/Session/Content/SesssionModel/MessageHeadlinesTextModel.m @@ -15,27 +15,11 @@ XPMessageRemoteExtModel *extModel = [XPMessageRemoteExtModel modelWithJSON:message.remoteExt[message.from]]; self.extModel = extModel; self.isSelf = [[NIMSDK sharedSDK].loginManager.currentAccount isEqualToString:message.from]; - NSString *name = extModel.nick.length > 6 ? [NSString stringWithFormat:@"%@...",[extModel.nick substringToIndex:6]] : extModel.nick; - self.nameAtt = [self createTextAttribute:name color:UIColorFromRGB(0x333333) font:kFontBold(14)]; - [self.nameAtt appendAttributedString:[self createSapceAttribute:2]]; - if (extModel.experUrl) { - [self.nameAtt appendAttributedString:[self createUrlImageAttribute:extModel.experUrl size:CGSizeMake(kGetScaleWidth(36), kGetScaleWidth(18))]]; - [self.nameAtt appendAttributedString:[self createSapceAttribute:2]]; - } - if (extModel.charmUrl) { - [self.nameAtt appendAttributedString:[self createUrlImageAttribute:extModel.charmUrl size:CGSizeMake(kGetScaleWidth(36), kGetScaleWidth(18))]]; - [self.nameAtt appendAttributedString:[self createSapceAttribute:2]]; - } NSString * messageText = message.text; if (!messageText) { messageText = YMLocalizedString(@"MessageTextModel0"); } - - - - - - + CGFloat width = [UILabel getWidthWithText:messageText height:kGetScaleWidth(36) font:kFontMedium(14)]; width = width > kGetScaleWidth(200) ? kGetScaleWidth(200) : width; diff --git a/YuMi/Modules/YMMessage/View/Session/MSSessionPublicChatHallVC.m b/YuMi/Modules/YMMessage/View/Session/MSSessionPublicChatHallVC.m index 58df0b0e..f3cc6c47 100644 --- a/YuMi/Modules/YMMessage/View/Session/MSSessionPublicChatHallVC.m +++ b/YuMi/Modules/YMMessage/View/Session/MSSessionPublicChatHallVC.m @@ -30,6 +30,7 @@ #import "XPMessageRemoteExtModel.h" #import "MSSessionPublicChatHalImageModel.h" #import "MSSessionPublicChatHalImageCell.h" +#import "MSSessionPublicChatHalRightTextCell.h" ///View #import "MSSessionPublicChatHalTextCell.h" #import "MessageCell.h" @@ -53,6 +54,7 @@ #import "XPCandyTreeInsufficientBalanceView.h" #import "XPIAPRechargeViewController.h" #import "Api+Mine.h" +#import "MSSessionPublicChatHalIRightmageCell.h" @interface MSSessionPublicChatHallVC () @property (nonatomic, strong) NIMSession * session; @property (nonatomic, strong) NSMutableArray * messages; @@ -523,13 +525,26 @@ - (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath { - MessageBaseModel * message = [self.messages safeObjectAtIndex1:indexPath.row]; + MessageBaseModel * message = [self.messages safeObjectAtIndex1:indexPath.row]; + MessageHeadlinesTextModel * textModel = (MessageHeadlinesTextModel *)message; if(message.messageType == SessionMessageType_Text){ + + if(textModel.isSelf){ + MSSessionPublicChatHalRightTextCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([MSSessionPublicChatHalRightTextCell class]) forIndexPath:indexPath]; + [cell render:message]; + + return cell; + } MSSessionPublicChatHalTextCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([MSSessionPublicChatHalTextCell class]) forIndexPath:indexPath]; [cell render:message]; return cell; }else if (message.messageType == SessionMessageType_Image){ + if(textModel.isSelf){ + MSSessionPublicChatHalIRightmageCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([MSSessionPublicChatHalIRightmageCell class]) forIndexPath:indexPath]; + [cell render:message]; + return cell; + } MSSessionPublicChatHalImageCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([MSSessionPublicChatHalImageCell class]) forIndexPath:indexPath]; [cell render:message]; return cell; @@ -550,10 +565,7 @@ } -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - MessageBaseModel *msg = [self.messages safeObjectAtIndex1:indexPath.row]; - return msg.height; -} + - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ MessageBaseModel *m = [self.messages safeObjectAtIndex1:indexPath.row]; NSLog(@"%@",m.message.remoteExt); @@ -999,6 +1011,8 @@ _sessionTableView.showsVerticalScrollIndicator = NO; [_sessionTableView registerClass:[MSSessionPublicChatHalTextCell class] forCellReuseIdentifier:NSStringFromClass([MSSessionPublicChatHalTextCell class])]; [_sessionTableView registerClass:[MSSessionPublicChatHalImageCell class] forCellReuseIdentifier:NSStringFromClass([MSSessionPublicChatHalImageCell class])]; + [_sessionTableView registerClass:[MSSessionPublicChatHalRightTextCell class] forCellReuseIdentifier:NSStringFromClass([MSSessionPublicChatHalRightTextCell class])]; + [_sessionTableView registerClass:[MSSessionPublicChatHalIRightmageCell class] forCellReuseIdentifier:NSStringFromClass([MSSessionPublicChatHalIRightmageCell class])]; if (@available(iOS 11.0, *)) { diff --git a/YuMi/Modules/YMMine/View/Noble/View/SubViews/PINobleCenterTitleCell.m b/YuMi/Modules/YMMine/View/Noble/View/SubViews/PINobleCenterTitleCell.m index b57cf9f3..ed93023c 100644 --- a/YuMi/Modules/YMMine/View/Noble/View/SubViews/PINobleCenterTitleCell.m +++ b/YuMi/Modules/YMMine/View/Noble/View/SubViews/PINobleCenterTitleCell.m @@ -33,17 +33,12 @@ _bgImageView.hidden = !self.info.isReturnProfit; } -(void)installConstraints{ - CGFloat width = 43; - if (isMSEN()){ - width = 40; - }else if (isMSRTL()){ - width = 54; - } + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(kGetScaleWidth(width)); + make.width.mas_equalTo(kGetScaleWidth(16)); make.height.mas_equalTo(kGetScaleWidth(16)); make.top.mas_equalTo(0); - make.trailing.mas_equalTo(10); + make.trailing.mas_equalTo(0); }]; } @@ -52,7 +47,7 @@ - (UIImageView *)bgImageView{ if(!_bgImageView){ _bgImageView = [UIImageView new]; - _bgImageView.image = [[UIImage getLanguageImage:@"mine_noble_center_tag_title_bg"] ms_SetImageForRTL]; + _bgImageView.image = kImage(@"mine_noble_center_tag_title_bg_ar"); _bgImageView.hidden = YES; } return _bgImageView; diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m index 1f4831ad..a957cdad 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m @@ -240,7 +240,7 @@ [self.stackView addArrangedSubview:self.arrangeMicButton]; [self.stackView addArrangedSubview:self.messageButton]; [self.stackView addArrangedSubview:self.moreButton]; - [self.stackView addArrangedSubview:self.nobleButton]; +// [self.stackView addArrangedSubview:self.nobleButton]; self.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.15); CAShapeLayer * layer = [CAShapeLayer layer]; diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h b/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h index 502808f2..17f208c1 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h +++ b/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h @@ -11,17 +11,17 @@ NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, RoomMoreMenuType) { ///礼物值关闭 - RoomMoreMenuType_Gift_Value_Close = 1, - ///礼物值开启 - RoomMoreMenuType_Gift_Value_Open = 2, +// RoomMoreMenuType_Gift_Value_Close = 1, +// ///礼物值开启 +// RoomMoreMenuType_Gift_Value_Open = 2, ///公屏关闭 - RoomMoreMenuType_Message_Screen_Close = 3, - ///公屏开启 - RoomMoreMenuType_Message_Screen_Open = 4, - ///我的礼物特效关闭 - RoomMoreMenuType_Gift_Effect_Close = 5, - ///我的礼物特效开启 - RoomMoreMenuType_Gift_Effect_Open = 6, +// RoomMoreMenuType_Message_Screen_Close = 3, +// ///公屏开启 +// RoomMoreMenuType_Message_Screen_Open = 4, +// ///我的礼物特效关闭 +// RoomMoreMenuType_Gift_Effect_Close = 5, +// ///我的礼物特效开启 +// RoomMoreMenuType_Gift_Effect_Open = 6, ///房间设置 RoomMoreMenuType_Room_Setting = 7, ///邀请粉丝 diff --git a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m index 744fbb59..846560b0 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m +++ b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m @@ -32,17 +32,17 @@ roomPK.type = roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? RoomMoreMenuType_Room_PK_Close : RoomMoreMenuType_Room_PK_Open; roomPK.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; - XPRoomMoreItemModel * giftValue = [[XPRoomMoreItemModel alloc] init]; - giftValue.title = roomInfo.showGiftValue ? YMLocalizedString(@"XPMoreMenuPresenter27") : YMLocalizedString(@"XPMoreMenuPresenter3"); - giftValue.imageName= @"room_more_menu_gift_value"; - giftValue.type = roomInfo.showGiftValue ? RoomMoreMenuType_Gift_Value_Close : RoomMoreMenuType_Gift_Value_Open; - giftValue.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; +// XPRoomMoreItemModel * giftValue = [[XPRoomMoreItemModel alloc] init]; +// giftValue.title = roomInfo.showGiftValue ? YMLocalizedString(@"XPMoreMenuPresenter27") : YMLocalizedString(@"XPMoreMenuPresenter3"); +// giftValue.imageName= @"room_more_menu_gift_value"; +// giftValue.type = roomInfo.showGiftValue ? RoomMoreMenuType_Gift_Value_Close : RoomMoreMenuType_Gift_Value_Open; +// giftValue.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; - XPRoomMoreItemModel * giftEffect = [[XPRoomMoreItemModel alloc] init]; - giftEffect.title = roomInfo.hasAnimationEffect ? YMLocalizedString(@"XPMoreMenuPresenter28") : YMLocalizedString(@"XPMoreMenuPresenter5"); - giftEffect.imageName = @"room_more_menu_gift_effect"; - giftEffect.type = roomInfo.hasAnimationEffect ? RoomMoreMenuType_Gift_Effect_Close : RoomMoreMenuType_Gift_Effect_Open; - giftEffect.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; +// XPRoomMoreItemModel * giftEffect = [[XPRoomMoreItemModel alloc] init]; +// giftEffect.title = roomInfo.hasAnimationEffect ? YMLocalizedString(@"XPMoreMenuPresenter28") : YMLocalizedString(@"XPMoreMenuPresenter5"); +// giftEffect.imageName = @"room_more_menu_gift_effect"; +// giftEffect.type = roomInfo.hasAnimationEffect ? RoomMoreMenuType_Gift_Effect_Close : RoomMoreMenuType_Gift_Effect_Open; +// giftEffect.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * wishGift = [[XPRoomMoreItemModel alloc] init]; wishGift.title = YMLocalizedString(@"XPMoreMenuPresenter6"); @@ -81,11 +81,11 @@ if (roomInfo.pkMatchStartTime) { anchorRoomPK.title = YMLocalizedString(@"XPMoreMenuPresenter17"); } - XPRoomMoreItemModel * messageScreen = [[XPRoomMoreItemModel alloc] init]; - messageScreen.title = roomInfo.isCloseScreen ? YMLocalizedString(@"XPMoreMenuPresenter34") : YMLocalizedString(@"XPMoreMenuPresenter19"); - messageScreen.imageName = @"room_more_menu_message"; - messageScreen.type = roomInfo.isCloseScreen ? RoomMoreMenuType_Message_Screen_Open : RoomMoreMenuType_Message_Screen_Close; - messageScreen.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; +// XPRoomMoreItemModel * messageScreen = [[XPRoomMoreItemModel alloc] init]; +// messageScreen.title = roomInfo.isCloseScreen ? YMLocalizedString(@"XPMoreMenuPresenter34") : YMLocalizedString(@"XPMoreMenuPresenter19"); +// messageScreen.imageName = @"room_more_menu_message"; +// messageScreen.type = roomInfo.isCloseScreen ? RoomMoreMenuType_Message_Screen_Open : RoomMoreMenuType_Message_Screen_Close; +// messageScreen.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * clearScreen = [[XPRoomMoreItemModel alloc] init]; clearScreen.title = YMLocalizedString(@"XPMoreMenuPresenter20"); @@ -179,18 +179,15 @@ // if (isCreator && roomInfo.type != RoomType_Anchor && roomInfo.isPermitRoom != PermitRoomType_Licnese && roomInfo.isPermitRoom != PermitRoomType_YoungerStar) { // [array addObject:releaseRadio]; // } - [array addObject:giftEffect]; + [array addObject:roomSetting]; - [array addObject:messageScreen]; [array addObject:clearScreen]; - [array addObject:giftValue]; + } else { [array addObject:trumpet]; - [array addObject:giftEffect]; + } - } else { - [array addObject:giftEffect]; } diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m index 6bd50804..f0abb3cb 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m +++ b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m @@ -248,53 +248,53 @@ UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey; NSString * roomUid = [NSString stringWithFormat:@"%ld",self.roomInfo.uid]; NSString * roomId = [NSString stringWithFormat:@"%ld", self.roomInfo.roomId]; switch (item.type) { - case RoomMoreMenuType_Gift_Value_Close: - { - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeGiftValue"}]; - if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) { - [self showErrorToast:YMLocalizedString(@"XPRoomMoreMenuViewController2")]; - return; - } - TTAlertConfig * config = [[TTAlertConfig alloc] init]; - config.title = @""; - config.message = YMLocalizedString(@"XPRoomMoreMenuViewController3"); - [TTPopup alertWithConfig:config confirmHandler:^{ - [self.presenter closeRoomGiftValue:roomUid]; - } cancelHandler:^{ - - }]; - } - break; - case RoomMoreMenuType_Gift_Value_Open: - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openGiftValue"}]; - [self.presenter openRoomGiftValue:roomUid]; - break; - case RoomMoreMenuType_Message_Screen_Open: - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openScreen"}]; - [self.presenter updateRoomMessageScreenState:NO roomId:roomId]; - break; - case RoomMoreMenuType_Message_Screen_Close: - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeScreen"}]; - [self.presenter updateRoomMessageScreenState:YES roomId:roomId]; - break; - case RoomMoreMenuType_Gift_Effect_Open: - { - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openGiftEffect"}]; - [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController4")]; - NSDictionary * dic = @{@"hasAnimationEffect": @(1)}; - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomGiftEffectUpdateNotificationKey object:dic]; - [self dismissViewControllerAnimated:YES completion:nil]; - } - break; - case RoomMoreMenuType_Gift_Effect_Close: - { - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeGiftEffect"}]; - [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController5")]; - NSDictionary * dic = @{@"hasAnimationEffect": @(0)}; - [[NSNotificationCenter defaultCenter] postNotificationName:kRoomGiftEffectUpdateNotificationKey object:dic]; - [self dismissViewControllerAnimated:YES completion:nil]; - } - break; +// case RoomMoreMenuType_Gift_Value_Close: +// { +// [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeGiftValue"}]; +// if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) { +// [self showErrorToast:YMLocalizedString(@"XPRoomMoreMenuViewController2")]; +// return; +// } +// TTAlertConfig * config = [[TTAlertConfig alloc] init]; +// config.title = @""; +// config.message = YMLocalizedString(@"XPRoomMoreMenuViewController3"); +// [TTPopup alertWithConfig:config confirmHandler:^{ +// [self.presenter closeRoomGiftValue:roomUid]; +// } cancelHandler:^{ +// +// }]; +// } +// break; +// case RoomMoreMenuType_Gift_Value_Open: +// [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openGiftValue"}]; +// [self.presenter openRoomGiftValue:roomUid]; +// break; +// case RoomMoreMenuType_Message_Screen_Open: +// [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openScreen"}]; +// [self.presenter updateRoomMessageScreenState:NO roomId:roomId]; +// break; +// case RoomMoreMenuType_Message_Screen_Close: +// [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeScreen"}]; +// [self.presenter updateRoomMessageScreenState:YES roomId:roomId]; +// break; +// case RoomMoreMenuType_Gift_Effect_Open: +// { +// [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"openGiftEffect"}]; +// [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController4")]; +// NSDictionary * dic = @{@"hasAnimationEffect": @(1)}; +// [[NSNotificationCenter defaultCenter] postNotificationName:kRoomGiftEffectUpdateNotificationKey object:dic]; +// [self dismissViewControllerAnimated:YES completion:nil]; +// } +// break; +// case RoomMoreMenuType_Gift_Effect_Close: +// { +// [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"closeGiftEffect"}]; +// [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController5")]; +// NSDictionary * dic = @{@"hasAnimationEffect": @(0)}; +// [[NSNotificationCenter defaultCenter] postNotificationName:kRoomGiftEffectUpdateNotificationKey object:dic]; +// [self dismissViewControllerAnimated:YES completion:nil]; +// } +// break; case RoomMoreMenuType_Invite_Fans: { [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_more_tool_click eventAttributes:@{@"roomMoreMenuType" : @"inviteFans"}]; diff --git a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h index 7424df28..6a0919d8 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h +++ b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h @@ -72,6 +72,16 @@ NS_ASSUME_NONNULL_BEGIN /// @param completion 完成 /// @param roomUid roomUid +(void)requestRoomOnlineUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +/// 关闭房间礼物值 +/// @param completion 完成 +/// @param uid 操作人的uid +/// @param roomUid 房主的uid ++ (void)closeRoomGiftValue:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid; +/// 开启房间礼物值 +/// @param completion 完成 +/// @param uid 操作人的uid +/// @param roomUid 房主的uid ++ (void)openRoomGiftValue:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m index b4584496..6c3e2509 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m +++ b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m @@ -103,4 +103,20 @@ +(void)requestRoomOnlineUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{ [self makeRequest:@"room/v2/online" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; } +/// 关闭房间礼物值 +/// @param completion 完成 +/// @param uid 操作人的uid +/// @param roomUid 房主的uid ++ (void)closeRoomGiftValue:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL2Nsb3Nl"];///room/gift/value/close + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, nil]; +} +/// 开启房间礼物值 +/// @param completion 完成 +/// @param uid 操作人的uid +/// @param roomUid 房主的uid ++ (void)openRoomGiftValue:(HttpRequestHelperCompletion)completion uid:(NSString *)uid roomUid:(NSString *)roomUid { + NSString * fang = [NSString stringFromBase64String:@"cm9vbS9naWZ0L3ZhbHVlL29wZW4="];///room/gift/value/open + [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, roomUid, nil]; +} @end diff --git a/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.h b/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.h index 9cd720b7..7913f99f 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.h +++ b/YuMi/Modules/YMRoom/View/Setting/Model/XPRoomSettingItemModel.h @@ -30,8 +30,10 @@ typedef NS_ENUM(NSInteger, RoomSettingItemType) { RoomSettingItemType_Message_Screen, ///排麦 RoomSettingItemType_Arrange_Mic, - ///排麦 + ///离开模式 RoomSettingItemType_Leave_Model, + ///关闭礼物值 + RoomSettingItemType_Gift_Value_Model, }; @interface XPRoomSettingItemModel : PIBaseModel diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h index 6ba45dad..938d17e2 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h @@ -61,6 +61,14 @@ NS_ASSUME_NONNULL_BEGIN /// 获取房间在线用户 /// @param roomUid roomUid -(void)getRoomOnlineUserListWithRoomUid:(NSString *)roomUid; +/// 关闭房间礼物值 +/// @param roomUid 房间的uid +- (void)closeRoomGiftValue:(NSString *)roomUid itemModel:(XPRoomSettingItemModel *)itemModel; +/// 开启房间礼物值 +/// @param roomUid 房间的uid +- (void)openRoomGiftValue:(NSString *)roomUid itemModel:(XPRoomSettingItemModel *)itemModel; + + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m index fd04c7c3..e5115971 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m @@ -76,6 +76,13 @@ leaveItem.title = YMLocalizedString(@"XPRoomSettingPresenter9"); leaveItem.switchState = roomInfo.leaveMode; leaveItem.type = RoomSettingItemType_Leave_Model; + + + XPRoomSettingItemModel * giftValueItem = [[XPRoomSettingItemModel alloc] init]; + giftValueItem.title = roomInfo.showGiftValue ? YMLocalizedString(@"XPMoreMenuPresenter27") : YMLocalizedString(@"XPMoreMenuPresenter3"); + giftValueItem.switchState = roomInfo.showGiftValue; + giftValueItem.type = RoomSettingItemType_Gift_Value_Model; + NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; NSString * uid = [AccountInfoStorage instance].getUid; @@ -210,14 +217,16 @@ } } } - if(![ClientConfig shareConfig].canOpen) { - array = @[ - @[messageScreedItem, titleItem], - @[lockItem], - @[managerItem, blackItem] - ]; - } - [[self getView] getRoomSettingListSuccess:array]; + NSMutableArray *list = [[NSMutableArray alloc]initWithArray:array]; + if(member.type == NIMChatroomMemberTypeManager || member.type == NIMChatroomMemberTypeCreator || isSuperAdmin){ + NSMutableArray *subList = [[NSMutableArray alloc]initWithArray:[list safeObjectAtIndex1:2]?:@[]]; + if(subList){ + [subList addObject:giftValueItem]; + } + list[2] = subList; + } + + [[self getView] getRoomSettingListSuccess:list]; } }]; } @@ -359,4 +368,25 @@ }] roomUid:roomUid]; } +/// 关闭房间礼物值 +/// @param roomUid 房间的uid +- (void)closeRoomGiftValue:(NSString *)roomUid itemModel:(XPRoomSettingItemModel *)itemModel{ + NSString * uid = [AccountInfoStorage instance].getUid; + [Api closeRoomGiftValue:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] closeRoomGiftValueSuccessWithItemModel:itemModel]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] closeRoomGiftValueFailWithItemModel:itemModel]; + }] uid:uid roomUid:roomUid]; +} +/// 开启房间礼物值 +/// @param roomUid 房间的uid +- (void)openRoomGiftValue:(NSString *)roomUid itemModel:(XPRoomSettingItemModel *)itemModel{ + NSString * uid = [AccountInfoStorage instance].getUid; + [Api openRoomGiftValue:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] openRoomGiftValueSuccessWithItemModel:itemModel]; + }fail:^(NSInteger code, NSString * _Nullable msg) { + [[self getView] openRoomGiftValueFailWithItemModel:itemModel]; + }] uid:uid roomUid:roomUid]; +} + @end diff --git a/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h index 59812c28..6e864bc3 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h +++ b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h @@ -32,6 +32,11 @@ NS_ASSUME_NONNULL_BEGIN - (void)updateRoomInfoFail:(NSString *)message; //获取房间在线用户成功 -(void)getRoomOnlineUserListSuccess:(NSArray *)list; +-(void)closeRoomGiftValueSuccessWithItemModel:(XPRoomSettingItemModel *)itemModel; +-(void)closeRoomGiftValueFailWithItemModel:(XPRoomSettingItemModel *)itemModel; +-(void)openRoomGiftValueSuccessWithItemModel:(XPRoomSettingItemModel *)itemModel; +-(void)openRoomGiftValueFailWithItemModel:(XPRoomSettingItemModel *)itemModel; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.m index 29438d3e..52cd969f 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomSettingViewController.m @@ -269,6 +269,7 @@ XPRoomSettingItemModel * itemModel = [[self.datasource safeObjectAtIndex1:indexP [self.navigationController pushViewController:managerVC animated:YES]; } break; + default: break; } @@ -317,6 +318,7 @@ XPRoomSettingItemModel * itemModel = [[self.datasource safeObjectAtIndex1:indexP [self.presenter closeRoomArrangeMic:roomUid]; } } cancelHandler:^{ + [switchView setOn:!switchView.isOn]; }]; } @@ -335,6 +337,7 @@ XPRoomSettingItemModel * itemModel = [[self.datasource safeObjectAtIndex1:indexP [TTPopup alertWithConfig:config confirmHandler:^{ [self handleRoomLeaveMode]; } cancelHandler:^{ + [switchView setOn:!switchView.isOn]; }]; } break; @@ -368,7 +371,7 @@ XPRoomSettingItemModel * itemModel = [[self.datasource safeObjectAtIndex1:indexP NSString * mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId]; [self.presenter updateRoomInfo:self.roomInfo.title roomPwd:self.roomInfo.roomPwd tagId:roomTag classifyId:roomClassifyId hasAnimationEffect:NO roomUid:roomUid roomId:roomId type:self.roomInfo.type itemType:itemModel.type mgId:mgId]; } cancelHandler:^{ - + [switchView setOn:!switchView.isOn]; }]; } break; @@ -385,16 +388,58 @@ XPRoomSettingItemModel * itemModel = [[self.datasource safeObjectAtIndex1:indexP [TTPopup alertWithConfig:config confirmHandler:^{ [self.presenter updateRoomMessageScreenState:YES roomId:roomId]; } cancelHandler:^{ - + + [switchView setOn:!switchView.isOn]; }]; } break; + case RoomSettingItemType_Gift_Value_Model: + { + if (self.roomInfo.roomModeType == RoomModeType_Open_Blind) { + [self showErrorToast:YMLocalizedString(@"XPRoomMoreMenuViewController2")]; + return; + } + + if(isOn){ + [self.presenter openRoomGiftValue:roomUid itemModel:itemModel]; + return; + } + TTAlertConfig * config = [[TTAlertConfig alloc] init]; + config.title = @""; + config.message = YMLocalizedString(@"XPRoomMoreMenuViewController3"); + [TTPopup alertWithConfig:config confirmHandler:^{ + [self.presenter closeRoomGiftValue:roomUid itemModel:itemModel]; + } cancelHandler:^{ + [switchView setOn:!switchView.isOn]; + }]; + break; + } default: break; } } #pragma mark - XPRoomSettingProtocol + +-(void)closeRoomGiftValueSuccessWithItemModel:(XPRoomSettingItemModel *)itemModel{ + itemModel.switchState = !itemModel.switchState; + [self.tableView reloadData]; + [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController1")]; +} +-(void)closeRoomGiftValueFailWithItemModel:(XPRoomSettingItemModel *)itemModel{ + + [self.tableView reloadData]; +} +-(void)openRoomGiftValueSuccessWithItemModel:(XPRoomSettingItemModel *)itemModel{ + itemModel.switchState = !itemModel.switchState; + [self.tableView reloadData]; + [self showSuccessToast:YMLocalizedString(@"XPRoomMoreMenuViewController0")]; +} +-(void)openRoomGiftValueFailWithItemModel:(XPRoomSettingItemModel *)itemModel{ + [self.tableView reloadData]; +} + + - (void)getRoomSettingListSuccess:(NSArray *)list { self.datasource = list; [self.tableView reloadData]; diff --git a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m index 3c4d184a..3c1d5be9 100644 --- a/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m +++ b/YuMi/Modules/YMRoom/View/StageView/MicroView/MicroView.m @@ -36,8 +36,7 @@ @property (nonatomic,strong) UIImageView *micStateImageView; ///昵称容器 @property (nonatomic,strong) UIStackView *stackView; -///几号坑位 -@property (nonatomic,strong) UILabel *postionLabel; + ///用户名/号麦位 @property (nonatomic,strong) UILabel *nickLabel; ///0 号麦位显示性别 @@ -116,7 +115,7 @@ [self addSubview:self.groupTypeButton]; [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.postionLabel]; + [self.stackView addArrangedSubview:self.nickLabel]; [self.stackView addArrangedSubview:self.sexImageView]; } @@ -155,9 +154,7 @@ make.width.mas_lessThanOrEqualTo(kGetScaleWidth(88)); }]; - [self.postionLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.height.mas_equalTo(14); - }]; + [self.giftValueView mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(16); @@ -414,33 +411,30 @@ UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.avatarImageView.backgroundColor = [UIColor colorWithPatternImage:newImage]; - self.postionLabel.text = [NSString stringWithFormat:@"%d", micState.position + 1]; + if (self.roomInfo.type == RoomType_Anchor || (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode && self.roomInfo.roomId > 0) || (self.roomInfo.roomModeType == RoomModeType_Open_Blind && micState.position == 999)) { self.positionCharmImgView.hidden = YES; } - self.nickLabel.text = YMLocalizedString(@"MicroView0"); + self.nickLabel.text = [NSString stringWithFormat:@"%@%d",YMLocalizedString(@"MicroView0"), micState.position + 1]; } -(UserInfoModel *)getUser{ return self.userInfo; } - (void)configUser:(UserInfoModel *)userInfo { self.userInfo = userInfo; - if ([ClientConfig shareConfig].canOpen) { -// self.nickLabel.text = YMLocalizedString(@"MicroView0"); - self.postionLabel.hidden = NO; - } else { - self.nickLabel.text = YMLocalizedString(@"MicroView1"); - self.postionLabel.hidden = YES; - } + + self.nickLabel.hidden = NO; self.sexImageView.hidden = YES; self.forbidKickView.hidden = YES; if (userInfo) { self.avatarImageView.imageUrl = userInfo.avatar; if (userInfo.gender == GenderType_Male) { - [self.postionLabel setBackgroundColor:[DJDKMIMOMColor positionMaleNickBackColor]]; + + } else if(userInfo.gender == GenderType_Female){ - [self.postionLabel setBackgroundColor:[DJDKMIMOMColor positionFemaleNickBackColor]]; + + } NSString *nickStr = userInfo.nick; self.nickLabel.text = nickStr.length > 0 ? nickStr : @""; @@ -456,7 +450,8 @@ make.width.mas_lessThanOrEqualTo(kGetScaleWidth(150)); }]; self.sexImageView.hidden = YES; - self.postionLabel.hidden = YES; + + [self.sexImageView setTitle:[NSString getAgeWithBirth:userInfo.birth] forState:UIControlStateNormal]; self.sexImageView.backgroundColor = userInfo.gender == GenderType_Male ? UIColorFromRGB(0x6BB3FF) :UIColorFromRGB(0xFF80CC); self.sexImageView.titleEdgeInsets = userInfo.gender != GenderType_Male ? UIEdgeInsetsMake(0, 2, 0, 0):UIEdgeInsetsMake(0, -1, 0, 0); @@ -466,11 +461,11 @@ } else { self.nickLabel.textColor = [DJDKMIMOMColor positionNickColor]; self.avatarImageView.image = nil; - [self.postionLabel setBackgroundColor:[DJDKMIMOMColor positionNormalNickBackColor]]; + if ([ClientConfig shareConfig].canOpen) { if (self.microModel.microState.position == -1) { self.nickLabel.hidden = YES; - self.postionLabel.hidden = YES; + } } else { self.nickLabel.hidden = YES; @@ -654,18 +649,7 @@ return _stackView; } -- (UILabel *)postionLabel { - if (!_postionLabel) { - _postionLabel = [[UILabel alloc] init]; - _postionLabel.font = [UIFont systemFontOfSize:10]; - _postionLabel.textAlignment = NSTextAlignmentCenter; - _postionLabel.textColor = [UIColor colorWithWhite:1 alpha:1]; - _postionLabel.layer.masksToBounds = YES; - _postionLabel.layer.cornerRadius = 7; - [_postionLabel setBackgroundColor:[DJDKMIMOMColor positionNormalNickBackColor]]; - } - return _postionLabel; -} + - (UIButton *)sexImageView { if (!_sexImageView) { diff --git a/YuMi/Modules/YMTabbar/View/TabbarViewController.m b/YuMi/Modules/YMTabbar/View/TabbarViewController.m index 91a6b694..5da69883 100644 --- a/YuMi/Modules/YMTabbar/View/TabbarViewController.m +++ b/YuMi/Modules/YMTabbar/View/TabbarViewController.m @@ -332,39 +332,46 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; - (void)bindCodeSuccess{ [self completeUserInfo]; } - -/// +///缓存礼物特效 -(void)requestGiftList{ - [self dealWithDefaultSvga]; - [self dealWithGiftList]; - ///所有礼物接口,缓存礼物,保存时间,一天只请求一次 - // NSString *time = [NSDate getNowTimeTimestamp]; - // NSString *curTime = [NSDate timestampSwitchTime:[time integerValue] andFormatter:@"yyyy-MM-dd"]; - // NSDictionary *timeDic = [[NSUserDefaults standardUserDefaults]valueForKey:@"kRequestGiftList"]; - // if(timeDic == nil){ - // NSMutableDictionary *curDic = [[NSMutableDictionary alloc]initWithDictionary:timeDic]; - // [curDic setValue:@(YES) forKey:curTime]; - // [[NSUserDefaults standardUserDefaults]setValue:curDic forKey:@"kRequestGiftList"]; - // [[NSUserDefaults standardUserDefaults]synchronize]; - // }else{ - // if(timeDic[curTime]!= nil)return; - // NSMutableDictionary *curDic = [[NSMutableDictionary alloc]initWithDictionary:timeDic]; - // [curDic removeAllObjects]; - // [curDic setValue:@(YES) forKey:curTime]; - // [[NSUserDefaults standardUserDefaults]setValue:curDic forKey:@"kRequestGiftList"]; - // [[NSUserDefaults standardUserDefaults]synchronize]; - // } - [Api requestCacheGiftDynamicEffectList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if(code == 200){ - NSArray *list = data.data; - NSSet *setList = [[NSSet alloc]initWithArray:list]; - for (NSString *url in setList) { - NSString *encodingUrl = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet]; - [self cacheGiftDynamicEffectList:encodingUrl]; + + @kWeakify(self); + [[AFNetworkReachabilityManager sharedManager] startMonitoring]; + [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { + @kStrongify(self); + switch (status) { + case AFNetworkReachabilityStatusUnknown: + break; + case AFNetworkReachabilityStatusNotReachable: + + break; + case AFNetworkReachabilityStatusReachableViaWWAN: + case AFNetworkReachabilityStatusReachableViaWiFi: + { + if(self.isFirstReachability == NO){ + [self dealWithDefaultSvga]; + [self dealWithGiftList]; + [Api requestCacheGiftDynamicEffectList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if(code == 200){ + self.isFirstReachability = YES; + NSArray *list = data.data; + NSSet *setList = [[NSSet alloc]initWithArray:list];///去重,防止有重复的 + for (NSString *url in setList) { + NSString *encodingUrl = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet characterSetWithCharactersInString:@"`#%^{}\"[]|\\<> "].invertedSet]; + [self cacheGiftDynamicEffectList:encodingUrl]; + } + } + }]; + } + } + break; + default: + break; } }]; + } -(void)dealWithDefaultSvga{ diff --git a/YuMi/ar.lproj/Localizable.strings b/YuMi/ar.lproj/Localizable.strings index efce68e2..1ec0d0c6 100644 --- a/YuMi/ar.lproj/Localizable.strings +++ b/YuMi/ar.lproj/Localizable.strings @@ -1510,9 +1510,9 @@ ineHeadView12" = "الحمل"; "XPRoomPKTimePickerView7" = "0 ثانية"; "XPRoomPKTimePickerView8" = "30 ثانية"; -"XPRoomPKSelectUserView0" = "الميكرفون رقم 0"; +"XPRoomPKSelectUserView0" = "NO.0"; "XPRoomPKSelectUserView1" = "تأكيد"; -"XPRoomPKSelectUserView2" = "الميكرفون رقم %d"; +"XPRoomPKSelectUserView2" = "NO.%d"; "XPRoomPKUserView0" = "في انتظار التصعيد"; "XPRoomPKUserView1" = "في انتظار التصعيد"; @@ -1630,7 +1630,7 @@ ineHeadView12" = "الحمل"; "XPUserCardPresenter1" = "موقع المالك"; "XPUserCardPresenter2" = "الموقع رقم %d للملك"; "XPUserCardPresenter3" = "الموقع رقم %d للملكة"; -"XPUserCardPresenter4" = "الموقع رقم %d للميك"; +"XPUserCardPresenter4" = "NO.%d"; "XPUserCardPresenter6" = "فتح المايك"; "XPUserCardPresenter9" = "إزالة"; "XPUserCardPresenter11" = "إلغاء القفل"; @@ -1856,7 +1856,7 @@ ineHeadView12" = "الحمل"; "MicroGiftValueView0" = "9999 مليون+"; "MicroGiftValueView1" = "%lld مليون"; -"MicroView0" = "مكان"; +"MicroView0" = "NO."; "MicroView1" = "موقع"; "MicroView2" = "الفريق الأحمر"; "MicroView3" = "الفريق الأزرق"; diff --git a/YuMi/en.lproj/Localizable.strings b/YuMi/en.lproj/Localizable.strings index 4babc776..c42e43f3 100644 --- a/YuMi/en.lproj/Localizable.strings +++ b/YuMi/en.lproj/Localizable.strings @@ -1249,9 +1249,9 @@ "XPRoomPKTimePickerView7" = "0 seconds"; "XPRoomPKTimePickerView8" = "30 seconds"; -"XPRoomPKSelectUserView0" = "Mic Slot 0"; +"XPRoomPKSelectUserView0" = "NO.0"; "XPRoomPKSelectUserView1" = "Confirm"; -"XPRoomPKSelectUserView2" = "Mic Slot %d"; +"XPRoomPKSelectUserView2" = "NO.%d"; "XPRoomPKUserView0" = "Waiting to Get on Mic"; "XPRoomPKUserView1" = "Waiting to Get on Mic"; @@ -1370,7 +1370,7 @@ "XPUserCardPresenter1" = "Host"; "XPUserCardPresenter2" = "Male God Slot %d"; "XPUserCardPresenter3" = "Female God Slot %d"; -"XPUserCardPresenter4" = "Mic Slot %d"; +"XPUserCardPresenter4" = "NO.%d"; "XPUserCardPresenter5" = "Close mic"; "XPUserCardPresenter6" = "Turn on Mic"; "XPUserCardPresenter7" = "Hold he on the mic"; @@ -1596,7 +1596,7 @@ "MicroGiftValueView0" = "99.99M+"; "MicroGiftValueView1" = "%lldM"; -"MicroView0" = "Mic"; +"MicroView0" = "NO."; "MicroView1" = "Slot"; "MicroView2" = "Red Team"; "MicroView3" = "Blue Team"; diff --git a/YuMi/zh-Hans.lproj/Localizable.strings b/YuMi/zh-Hans.lproj/Localizable.strings index 5eb8a650..d4c87782 100644 --- a/YuMi/zh-Hans.lproj/Localizable.strings +++ b/YuMi/zh-Hans.lproj/Localizable.strings @@ -861,9 +861,9 @@ "XPRoomPKTimePickerView7" = "0秒"; "XPRoomPKTimePickerView8" = "30秒"; -"XPRoomPKSelectUserView0" = "0号麦位"; +"XPRoomPKSelectUserView0" = "NO.0"; "XPRoomPKSelectUserView1" = "确定"; -"XPRoomPKSelectUserView2" = "%d号麦位"; +"XPRoomPKSelectUserView2" = "NO.%d"; "XPRoomPKUserView0" = "等待上麦"; "XPRoomPKUserView1" = "等待上麦"; @@ -982,7 +982,7 @@ "XPUserCardPresenter1" = "房主位"; "XPUserCardPresenter2" = "%d号男神位"; "XPUserCardPresenter3" = "%d号女神位"; -"XPUserCardPresenter4" = "%d号麦位"; +"XPUserCardPresenter4" = "NO.%d"; "XPUserCardPresenter6" = "开麦"; "XPUserCardPresenter9" = "抱Ta下麦"; "XPUserCardPresenter11" = "解锁"; @@ -1208,7 +1208,7 @@ "MicroGiftValueView0" = "9999万+"; "MicroGiftValueView1" = "%lld万"; -"MicroView0" = "号麦位"; +"MicroView0" = "NO."; "MicroView1" = "坑位"; "MicroView2" = "红队"; "MicroView3" = "蓝队"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index 4d2199cb..e88ac9a1 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -862,9 +862,9 @@ "XPRoomPKTimePickerView7" = "0秒"; "XPRoomPKTimePickerView8" = "30秒"; -"XPRoomPKSelectUserView0" = "0號麥位"; +"XPRoomPKSelectUserView0" = "NO.0"; "XPRoomPKSelectUserView1" = "確定"; -"XPRoomPKSelectUserView2" = "%d號麥位"; +"XPRoomPKSelectUserView2" = "NO.%d"; "XPRoomPKUserView0" = "等待上麥"; "XPRoomPKUserView1" = "等待上麥"; @@ -983,7 +983,7 @@ "XPUserCardPresenter1" = "房主位"; "XPUserCardPresenter2" = "%d號男神位"; "XPUserCardPresenter3" = "%d號女神位"; -"XPUserCardPresenter4" = "%d號麥位"; +"XPUserCardPresenter4" = "NO.%d"; "XPUserCardPresenter6" = "開麥"; "XPUserCardPresenter9" = "抱Ta下麥"; "XPUserCardPresenter11" = "解鎖"; @@ -1211,7 +1211,7 @@ "MicroGiftValueView0" = "9999萬+"; "MicroGiftValueView1" = "%lld萬"; -"MicroView0" = "號麥位"; +"MicroView0" = "NO."; "MicroView1" = "坑位"; "MicroView2" = "紅隊"; "MicroView3" = "藍隊";