diff --git a/yinmeng-ios/Podfile b/yinmeng-ios/Podfile index 815d118..420982a 100644 --- a/yinmeng-ios/Podfile +++ b/yinmeng-ios/Podfile @@ -1,5 +1,6 @@ # Uncomment the next line to define a global platform for your project # platform :ios, '9.0' +source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' target 'yinmeng-ios' do # Comment the next line if you don't want to use dynamic frameworks @@ -13,6 +14,7 @@ target 'yinmeng-ios' do pod 'MBProgressHUD' pod 'ReactiveObjC' pod 'FFPopup' +pod 'TZImagePickerController' #易盾 本机一键登录 pod 'NTESQuickPass' #模型转化 diff --git a/yinmeng-ios/Podfile.lock b/yinmeng-ios/Podfile.lock index b08a54f..66590af 100644 --- a/yinmeng-ios/Podfile.lock +++ b/yinmeng-ios/Podfile.lock @@ -26,7 +26,7 @@ PODS: - Masonry (1.1.0) - MBProgressHUD (1.2.0) - MJExtension (3.4.1) - - MJRefresh (3.7.6) + - MJRefresh (3.7.5) - NIMSDK_LITE (8.9.119) - NTESBaseComponent (1.8) - NTESQuickPass (3.4.5): @@ -57,6 +57,11 @@ PODS: - TXLiteAVSDK_TRTC (10.3.12363): - TXLiteAVSDK_TRTC/TRTC (= 10.3.12363) - TXLiteAVSDK_TRTC/TRTC (10.3.12363) + - TZImagePickerController (3.8.3): + - TZImagePickerController/Basic (= 3.8.3) + - TZImagePickerController/Location (= 3.8.3) + - TZImagePickerController/Basic (3.8.3) + - TZImagePickerController/Location (3.8.3) - YYText (1.0.7) DEPENDENCIES: @@ -83,10 +88,11 @@ DEPENDENCIES: - SSKeychain - SVGAPlayer - TXLiteAVSDK_TRTC (~> 10.3.12271) + - TZImagePickerController - YYText SPEC REPOS: - trunk: + https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git: - AFNetworking - Base64 - FFPopup @@ -114,6 +120,7 @@ SPEC REPOS: - SSZipArchive - SVGAPlayer - TXLiteAVSDK_TRTC + - TZImagePickerController - YYText SPEC CHECKSUMS: @@ -128,7 +135,7 @@ SPEC CHECKSUMS: Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 MJExtension: 21c5f6f8c4d5d8844b7ae8fbae08fed0b501f961 - MJRefresh: 2fe7fb43a5167ceda20bb7e63f130c04fd1814a5 + MJRefresh: fdf5e979eb406a0341468932d1dfc8b7f9fce961 NIMSDK_LITE: c4895574b3e519c34e2c70ae013f0863efc87661 NTESBaseComponent: 7b310e7e80bb6c27183176188b98356d200dbbc5 NTESQuickPass: 7baf2a68a091fd69dbf70b84ecdc4eb6aa7dd7ad @@ -144,8 +151,13 @@ SPEC CHECKSUMS: SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef SVGAPlayer: 318b85a78b61292d6ae9dfcd651f3f0d1cdadd86 TXLiteAVSDK_TRTC: c4e42ef113788558b7c5f4250bad5f81925bcfb4 + TZImagePickerController: e9909edbadf7381140efc5b5c9f5bdbfd630f7d4 YYText: 5c461d709e24d55a182d1441c41dc639a18a4849 +<<<<<<< HEAD PODFILE CHECKSUM: f9ef35aef9e79e966fc3b6d31c6ed45e438d6dc5 +======= +PODFILE CHECKSUM: 2a4277ff265cc4f2794e24536deeb780e0a31077 +>>>>>>> 8893d997cc5aab2625ed0025815e70488ab1d650 -COCOAPODS: 1.14.2 +COCOAPODS: 1.12.1 diff --git a/yinmeng-ios/yinmeng-ios.xcodeproj/project.pbxproj b/yinmeng-ios/yinmeng-ios.xcodeproj/project.pbxproj index 24c6d42..f6d438a 100644 --- a/yinmeng-ios/yinmeng-ios.xcodeproj/project.pbxproj +++ b/yinmeng-ios/yinmeng-ios.xcodeproj/project.pbxproj @@ -7,6 +7,26 @@ objects = { /* Begin PBXBuildFile section */ + 233757562B0CB577001D0B7F /* MessagePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757262B0CB577001D0B7F /* MessagePresenter.m */; }; + 233757572B0CB577001D0B7F /* MessageMenuModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2337572C2B0CB577001D0B7F /* MessageMenuModel.m */; }; + 233757582B0CB577001D0B7F /* ChatLimitModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2337572D2B0CB577001D0B7F /* ChatLimitModel.m */; }; + 233757592B0CB577001D0B7F /* NIMBadgeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757312B0CB577001D0B7F /* NIMBadgeView.m */; }; + 2337575A2B0CB577001D0B7F /* UITableView+NIMScrollToBottom.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757342B0CB577001D0B7F /* UITableView+NIMScrollToBottom.m */; }; + 2337575B2B0CB577001D0B7F /* UIView+NIM.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757362B0CB577001D0B7F /* UIView+NIM.m */; }; + 2337575C2B0CB577001D0B7F /* SessionMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757392B0CB577001D0B7F /* SessionMessageCell.m */; }; + 2337575D2B0CB577001D0B7F /* SessionToolbarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2337573B2B0CB577001D0B7F /* SessionToolbarView.m */; }; + 2337575E2B0CB577001D0B7F /* NIMMessageMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 2337573C2B0CB577001D0B7F /* NIMMessageMaker.m */; }; + 2337575F2B0CB577001D0B7F /* SessionInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2337573D2B0CB577001D0B7F /* SessionInfoViewController.m */; }; + 233757602B0CB577001D0B7F /* SessionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2337573E2B0CB577001D0B7F /* SessionViewController.m */; }; + 233757612B0CB577001D0B7F /* MessageToolMenuCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757402B0CB577001D0B7F /* MessageToolMenuCollectionViewCell.m */; }; + 233757622B0CB577001D0B7F /* MessageContentImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757412B0CB577001D0B7F /* MessageContentImage.m */; }; + 233757632B0CB577001D0B7F /* MessageContentUnSupportView.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757472B0CB577001D0B7F /* MessageContentUnSupportView.m */; }; + 233757642B0CB577001D0B7F /* MessageContentText.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757482B0CB577001D0B7F /* MessageContentText.m */; }; + 233757652B0CB577001D0B7F /* SessionNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757492B0CB577001D0B7F /* SessionNavView.m */; }; + 233757662B0CB577001D0B7F /* SessionAudioRecordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2337574F2B0CB577001D0B7F /* SessionAudioRecordView.m */; }; + 233757672B0CB577001D0B7F /* Api+Message.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757512B0CB577001D0B7F /* Api+Message.m */; }; + 233757682B0CB577001D0B7F /* NIMMessageUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 233757542B0CB577001D0B7F /* NIMMessageUtils.m */; }; + 2337576B2B0CB630001D0B7F /* UIView+FilletCorner.m in Sources */ = {isa = PBXBuildFile; fileRef = 2337576A2B0CB630001D0B7F /* UIView+FilletCorner.m */; }; 8C4D535A2AFD4CF600238AE6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8C4D53582AFD4CF600238AE6 /* Main.storyboard */; }; 8C4D535C2AFD4CF700238AE6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8C4D535B2AFD4CF700238AE6 /* Assets.xcassets */; }; 8C4D535F2AFD4CF700238AE6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8C4D535D2AFD4CF700238AE6 /* LaunchScreen.storyboard */; }; @@ -82,21 +102,8 @@ 8C9C84282B0C697A00A601BC /* YMRoomMessageParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C831A2B0C697A00A601BC /* YMRoomMessageParser.m */; }; 8C9C84292B0C697A00A601BC /* YMRoomMiniManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C831E2B0C697A00A601BC /* YMRoomMiniManager.m */; }; 8C9C842A2B0C697A00A601BC /* Api+Room.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83212B0C697A00A601BC /* Api+Room.m */; }; - 8C9C842B2B0C697A00A601BC /* MessagePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83242B0C697A00A601BC /* MessagePresenter.m */; }; - 8C9C842C2B0C697A00A601BC /* ChatLimitModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C832A2B0C697A00A601BC /* ChatLimitModel.m */; }; - 8C9C842D2B0C697A00A601BC /* NIMBadgeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C832D2B0C697A00A601BC /* NIMBadgeView.m */; }; - 8C9C842E2B0C697A00A601BC /* UITableView+NIMScrollToBottom.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83302B0C697A00A601BC /* UITableView+NIMScrollToBottom.m */; }; - 8C9C842F2B0C697A00A601BC /* UIView+NIM.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83322B0C697A00A601BC /* UIView+NIM.m */; }; 8C9C84302B0C697A00A601BC /* MewSessionListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83342B0C697A00A601BC /* MewSessionListTableViewCell.m */; }; 8C9C84312B0C697A00A601BC /* MewSessionListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83352B0C697A00A601BC /* MewSessionListViewController.m */; }; - 8C9C84322B0C697A00A601BC /* SessionMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C833A2B0C697A00A601BC /* SessionMessageCell.m */; }; - 8C9C84332B0C697A00A601BC /* SessionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C833B2B0C697A00A601BC /* SessionViewController.m */; }; - 8C9C84342B0C697A00A601BC /* MessageContentImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C833D2B0C697A00A601BC /* MessageContentImage.m */; }; - 8C9C84352B0C697A00A601BC /* MessageContentUnSupportView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83422B0C697A00A601BC /* MessageContentUnSupportView.m */; }; - 8C9C84362B0C697A00A601BC /* MessageContentText.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83432B0C697A00A601BC /* MessageContentText.m */; }; - 8C9C84372B0C697A00A601BC /* SessionNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83442B0C697A00A601BC /* SessionNavView.m */; }; - 8C9C84382B0C697A00A601BC /* Api+Message.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83482B0C697A00A601BC /* Api+Message.m */; }; - 8C9C84392B0C697A00A601BC /* NIMMessageUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C834B2B0C697A00A601BC /* NIMMessageUtils.m */; }; 8C9C843A2B0C697A00A601BC /* BaseRtcImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83502B0C697A00A601BC /* BaseRtcImpl.m */; }; 8C9C843B2B0C697A00A601BC /* TRTCRtcImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83512B0C697A00A601BC /* TRTCRtcImpl.m */; }; 8C9C843C2B0C697A00A601BC /* RtcManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C9C83552B0C697A00A601BC /* RtcManager.m */; }; @@ -181,6 +188,48 @@ /* Begin PBXFileReference section */ 1797344FB85F47F60D0CC2A0 /* Pods_yinmeng_ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_yinmeng_ios.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 233757262B0CB577001D0B7F /* MessagePresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessagePresenter.m; sourceTree = ""; }; + 233757272B0CB577001D0B7F /* MessagePresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessagePresenter.h; sourceTree = ""; }; + 233757292B0CB577001D0B7F /* MessageProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageProtocol.h; sourceTree = ""; }; + 2337572B2B0CB577001D0B7F /* ChatLimitModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatLimitModel.h; sourceTree = ""; }; + 2337572C2B0CB577001D0B7F /* MessageMenuModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageMenuModel.m; sourceTree = ""; }; + 2337572D2B0CB577001D0B7F /* ChatLimitModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatLimitModel.m; sourceTree = ""; }; + 2337572E2B0CB577001D0B7F /* MessageMenuModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageMenuModel.h; sourceTree = ""; }; + 233757312B0CB577001D0B7F /* NIMBadgeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NIMBadgeView.m; sourceTree = ""; }; + 233757322B0CB577001D0B7F /* UITableView+NIMScrollToBottom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableView+NIMScrollToBottom.h"; sourceTree = ""; }; + 233757332B0CB577001D0B7F /* UIView+NIM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+NIM.h"; sourceTree = ""; }; + 233757342B0CB577001D0B7F /* UITableView+NIMScrollToBottom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITableView+NIMScrollToBottom.m"; sourceTree = ""; }; + 233757352B0CB577001D0B7F /* NIMBadgeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMBadgeView.h; sourceTree = ""; }; + 233757362B0CB577001D0B7F /* UIView+NIM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+NIM.m"; sourceTree = ""; }; + 233757382B0CB577001D0B7F /* SessionNavView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionNavView.h; sourceTree = ""; }; + 233757392B0CB577001D0B7F /* SessionMessageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionMessageCell.m; sourceTree = ""; }; + 2337573A2B0CB577001D0B7F /* SessionAudioRecordView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionAudioRecordView.h; sourceTree = ""; }; + 2337573B2B0CB577001D0B7F /* SessionToolbarView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionToolbarView.m; sourceTree = ""; }; + 2337573C2B0CB577001D0B7F /* NIMMessageMaker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NIMMessageMaker.m; sourceTree = ""; }; + 2337573D2B0CB577001D0B7F /* SessionInfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionInfoViewController.m; sourceTree = ""; }; + 2337573E2B0CB577001D0B7F /* SessionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionViewController.m; sourceTree = ""; }; + 233757402B0CB577001D0B7F /* MessageToolMenuCollectionViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageToolMenuCollectionViewCell.m; sourceTree = ""; }; + 233757412B0CB577001D0B7F /* MessageContentImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageContentImage.m; sourceTree = ""; }; + 233757422B0CB577001D0B7F /* MessageContentText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageContentText.h; sourceTree = ""; }; + 233757432B0CB577001D0B7F /* MessageContentUnSupportView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageContentUnSupportView.h; sourceTree = ""; }; + 233757442B0CB577001D0B7F /* MessageToolMenuCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageToolMenuCollectionViewCell.h; sourceTree = ""; }; + 233757452B0CB577001D0B7F /* MessageContentProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageContentProtocol.h; sourceTree = ""; }; + 233757462B0CB577001D0B7F /* MessageContentImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageContentImage.h; sourceTree = ""; }; + 233757472B0CB577001D0B7F /* MessageContentUnSupportView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageContentUnSupportView.m; sourceTree = ""; }; + 233757482B0CB577001D0B7F /* MessageContentText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageContentText.m; sourceTree = ""; }; + 233757492B0CB577001D0B7F /* SessionNavView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionNavView.m; sourceTree = ""; }; + 2337574A2B0CB577001D0B7F /* SessionMessageCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionMessageCell.h; sourceTree = ""; }; + 2337574B2B0CB577001D0B7F /* SessionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionViewController.h; sourceTree = ""; }; + 2337574C2B0CB577001D0B7F /* SessionInfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionInfoViewController.h; sourceTree = ""; }; + 2337574D2B0CB577001D0B7F /* NIMMessageMaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMMessageMaker.h; sourceTree = ""; }; + 2337574E2B0CB577001D0B7F /* SessionToolbarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionToolbarView.h; sourceTree = ""; }; + 2337574F2B0CB577001D0B7F /* SessionAudioRecordView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionAudioRecordView.m; sourceTree = ""; }; + 233757512B0CB577001D0B7F /* Api+Message.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+Message.m"; sourceTree = ""; }; + 233757522B0CB577001D0B7F /* Api+Message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+Message.h"; sourceTree = ""; }; + 233757542B0CB577001D0B7F /* NIMMessageUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NIMMessageUtils.m; sourceTree = ""; }; + 233757552B0CB577001D0B7F /* NIMMessageUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMMessageUtils.h; sourceTree = ""; }; + 233757692B0CB630001D0B7F /* UIView+FilletCorner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+FilletCorner.h"; sourceTree = ""; }; + 2337576A2B0CB630001D0B7F /* UIView+FilletCorner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+FilletCorner.m"; sourceTree = ""; }; 8C4D534C2AFD4CF600238AE6 /* yinmeng-ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "yinmeng-ios.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 8C4D53592AFD4CF600238AE6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 8C4D535B2AFD4CF700238AE6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; @@ -341,38 +390,10 @@ 8C9C831E2B0C697A00A601BC /* YMRoomMiniManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YMRoomMiniManager.m; sourceTree = ""; }; 8C9C83202B0C697A00A601BC /* Api+Room.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+Room.h"; sourceTree = ""; }; 8C9C83212B0C697A00A601BC /* Api+Room.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+Room.m"; sourceTree = ""; }; - 8C9C83242B0C697A00A601BC /* MessagePresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessagePresenter.m; sourceTree = ""; }; - 8C9C83252B0C697A00A601BC /* MessagePresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessagePresenter.h; sourceTree = ""; }; - 8C9C83272B0C697A00A601BC /* MessageProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageProtocol.h; sourceTree = ""; }; - 8C9C83292B0C697A00A601BC /* ChatLimitModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatLimitModel.h; sourceTree = ""; }; - 8C9C832A2B0C697A00A601BC /* ChatLimitModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatLimitModel.m; sourceTree = ""; }; - 8C9C832D2B0C697A00A601BC /* NIMBadgeView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NIMBadgeView.m; sourceTree = ""; }; - 8C9C832E2B0C697A00A601BC /* UITableView+NIMScrollToBottom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UITableView+NIMScrollToBottom.h"; sourceTree = ""; }; - 8C9C832F2B0C697A00A601BC /* UIView+NIM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+NIM.h"; sourceTree = ""; }; - 8C9C83302B0C697A00A601BC /* UITableView+NIMScrollToBottom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UITableView+NIMScrollToBottom.m"; sourceTree = ""; }; - 8C9C83312B0C697A00A601BC /* NIMBadgeView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMBadgeView.h; sourceTree = ""; }; - 8C9C83322B0C697A00A601BC /* UIView+NIM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+NIM.m"; sourceTree = ""; }; 8C9C83342B0C697A00A601BC /* MewSessionListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MewSessionListTableViewCell.m; sourceTree = ""; }; 8C9C83352B0C697A00A601BC /* MewSessionListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MewSessionListViewController.m; sourceTree = ""; }; 8C9C83362B0C697A00A601BC /* MewSessionListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MewSessionListTableViewCell.h; sourceTree = ""; }; 8C9C83372B0C697A00A601BC /* MewSessionListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MewSessionListViewController.h; sourceTree = ""; }; - 8C9C83392B0C697A00A601BC /* SessionNavView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionNavView.h; sourceTree = ""; }; - 8C9C833A2B0C697A00A601BC /* SessionMessageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionMessageCell.m; sourceTree = ""; }; - 8C9C833B2B0C697A00A601BC /* SessionViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionViewController.m; sourceTree = ""; }; - 8C9C833D2B0C697A00A601BC /* MessageContentImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageContentImage.m; sourceTree = ""; }; - 8C9C833E2B0C697A00A601BC /* MessageContentText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageContentText.h; sourceTree = ""; }; - 8C9C833F2B0C697A00A601BC /* MessageContentUnSupportView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageContentUnSupportView.h; sourceTree = ""; }; - 8C9C83402B0C697A00A601BC /* MessageContentProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageContentProtocol.h; sourceTree = ""; }; - 8C9C83412B0C697A00A601BC /* MessageContentImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageContentImage.h; sourceTree = ""; }; - 8C9C83422B0C697A00A601BC /* MessageContentUnSupportView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageContentUnSupportView.m; sourceTree = ""; }; - 8C9C83432B0C697A00A601BC /* MessageContentText.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageContentText.m; sourceTree = ""; }; - 8C9C83442B0C697A00A601BC /* SessionNavView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionNavView.m; sourceTree = ""; }; - 8C9C83452B0C697A00A601BC /* SessionMessageCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionMessageCell.h; sourceTree = ""; }; - 8C9C83462B0C697A00A601BC /* SessionViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionViewController.h; sourceTree = ""; }; - 8C9C83482B0C697A00A601BC /* Api+Message.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "Api+Message.m"; sourceTree = ""; }; - 8C9C83492B0C697A00A601BC /* Api+Message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Api+Message.h"; sourceTree = ""; }; - 8C9C834B2B0C697A00A601BC /* NIMMessageUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NIMMessageUtils.m; sourceTree = ""; }; - 8C9C834C2B0C697A00A601BC /* NIMMessageUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NIMMessageUtils.h; sourceTree = ""; }; 8C9C834F2B0C697A00A601BC /* RtcInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RtcInterface.h; sourceTree = ""; }; 8C9C83502B0C697A00A601BC /* BaseRtcImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseRtcImpl.m; sourceTree = ""; }; 8C9C83512B0C697A00A601BC /* TRTCRtcImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TRTCRtcImpl.m; sourceTree = ""; }; @@ -561,6 +582,125 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 233757242B0CB577001D0B7F /* Message */ = { + isa = PBXGroup; + children = ( + 233757252B0CB577001D0B7F /* Presenter */, + 233757282B0CB577001D0B7F /* Protocol */, + 2337572A2B0CB577001D0B7F /* Model */, + 2337572F2B0CB577001D0B7F /* View */, + 233757502B0CB577001D0B7F /* Api */, + 233757532B0CB577001D0B7F /* Tool */, + ); + path = Message; + sourceTree = ""; + }; + 233757252B0CB577001D0B7F /* Presenter */ = { + isa = PBXGroup; + children = ( + 233757262B0CB577001D0B7F /* MessagePresenter.m */, + 233757272B0CB577001D0B7F /* MessagePresenter.h */, + ); + path = Presenter; + sourceTree = ""; + }; + 233757282B0CB577001D0B7F /* Protocol */ = { + isa = PBXGroup; + children = ( + 233757292B0CB577001D0B7F /* MessageProtocol.h */, + ); + path = Protocol; + sourceTree = ""; + }; + 2337572A2B0CB577001D0B7F /* Model */ = { + isa = PBXGroup; + children = ( + 2337572B2B0CB577001D0B7F /* ChatLimitModel.h */, + 2337572C2B0CB577001D0B7F /* MessageMenuModel.m */, + 2337572D2B0CB577001D0B7F /* ChatLimitModel.m */, + 2337572E2B0CB577001D0B7F /* MessageMenuModel.h */, + ); + path = Model; + sourceTree = ""; + }; + 2337572F2B0CB577001D0B7F /* View */ = { + isa = PBXGroup; + children = ( + 233757302B0CB577001D0B7F /* NIMViews */, + 233757372B0CB577001D0B7F /* Session */, + ); + path = View; + sourceTree = ""; + }; + 233757302B0CB577001D0B7F /* NIMViews */ = { + isa = PBXGroup; + children = ( + 233757312B0CB577001D0B7F /* NIMBadgeView.m */, + 233757322B0CB577001D0B7F /* UITableView+NIMScrollToBottom.h */, + 233757332B0CB577001D0B7F /* UIView+NIM.h */, + 233757342B0CB577001D0B7F /* UITableView+NIMScrollToBottom.m */, + 233757352B0CB577001D0B7F /* NIMBadgeView.h */, + 233757362B0CB577001D0B7F /* UIView+NIM.m */, + ); + path = NIMViews; + sourceTree = ""; + }; + 233757372B0CB577001D0B7F /* Session */ = { + isa = PBXGroup; + children = ( + 233757382B0CB577001D0B7F /* SessionNavView.h */, + 233757392B0CB577001D0B7F /* SessionMessageCell.m */, + 2337573A2B0CB577001D0B7F /* SessionAudioRecordView.h */, + 2337573B2B0CB577001D0B7F /* SessionToolbarView.m */, + 2337573C2B0CB577001D0B7F /* NIMMessageMaker.m */, + 2337573D2B0CB577001D0B7F /* SessionInfoViewController.m */, + 2337573E2B0CB577001D0B7F /* SessionViewController.m */, + 2337573F2B0CB577001D0B7F /* Content */, + 233757492B0CB577001D0B7F /* SessionNavView.m */, + 2337574A2B0CB577001D0B7F /* SessionMessageCell.h */, + 2337574B2B0CB577001D0B7F /* SessionViewController.h */, + 2337574C2B0CB577001D0B7F /* SessionInfoViewController.h */, + 2337574D2B0CB577001D0B7F /* NIMMessageMaker.h */, + 2337574E2B0CB577001D0B7F /* SessionToolbarView.h */, + 2337574F2B0CB577001D0B7F /* SessionAudioRecordView.m */, + ); + path = Session; + sourceTree = ""; + }; + 2337573F2B0CB577001D0B7F /* Content */ = { + isa = PBXGroup; + children = ( + 233757402B0CB577001D0B7F /* MessageToolMenuCollectionViewCell.m */, + 233757412B0CB577001D0B7F /* MessageContentImage.m */, + 233757422B0CB577001D0B7F /* MessageContentText.h */, + 233757432B0CB577001D0B7F /* MessageContentUnSupportView.h */, + 233757442B0CB577001D0B7F /* MessageToolMenuCollectionViewCell.h */, + 233757452B0CB577001D0B7F /* MessageContentProtocol.h */, + 233757462B0CB577001D0B7F /* MessageContentImage.h */, + 233757472B0CB577001D0B7F /* MessageContentUnSupportView.m */, + 233757482B0CB577001D0B7F /* MessageContentText.m */, + ); + path = Content; + sourceTree = ""; + }; + 233757502B0CB577001D0B7F /* Api */ = { + isa = PBXGroup; + children = ( + 233757512B0CB577001D0B7F /* Api+Message.m */, + 233757522B0CB577001D0B7F /* Api+Message.h */, + ); + path = Api; + sourceTree = ""; + }; + 233757532B0CB577001D0B7F /* Tool */ = { + isa = PBXGroup; + children = ( + 233757542B0CB577001D0B7F /* NIMMessageUtils.m */, + 233757552B0CB577001D0B7F /* NIMMessageUtils.h */, + ); + path = Tool; + sourceTree = ""; + }; 4A6518CB5E73E536AD820F47 /* Pods */ = { isa = PBXGroup; children = ( @@ -649,6 +789,8 @@ 8C9C82232B0C695600A601BC /* UIImage */ = { isa = PBXGroup; children = ( + 233757692B0CB630001D0B7F /* UIView+FilletCorner.h */, + 2337576A2B0CB630001D0B7F /* UIView+FilletCorner.m */, 8C9C82242B0C695600A601BC /* UIImage+Utils.h */, 8C9C82252B0C695600A601BC /* UIImage+Utils.m */, ); @@ -1002,7 +1144,7 @@ 8C9C84802B0D25C700A601BC /* ModuleKit */, 8C9C82E12B0C697A00A601BC /* Home */, 8C9C82EE2B0C697A00A601BC /* Room */, - 8C9C83222B0C697A00A601BC /* Message */, + 233757242B0CB577001D0B7F /* Message */, 8C9C834D2B0C697A00A601BC /* RTC */, 8C9C83582B0C697A00A601BC /* Mine */, 8C9C83822B0C697A00A601BC /* IM */, @@ -1221,124 +1363,17 @@ path = Api; sourceTree = ""; }; - 8C9C83222B0C697A00A601BC /* Message */ = { - isa = PBXGroup; - children = ( - 8C9C83232B0C697A00A601BC /* Presenter */, - 8C9C83262B0C697A00A601BC /* Protocol */, - 8C9C83282B0C697A00A601BC /* Model */, - 8C9C832B2B0C697A00A601BC /* View */, - 8C9C83472B0C697A00A601BC /* Api */, - 8C9C834A2B0C697A00A601BC /* Tool */, - ); - path = Message; - sourceTree = ""; - }; - 8C9C83232B0C697A00A601BC /* Presenter */ = { - isa = PBXGroup; - children = ( - 8C9C83242B0C697A00A601BC /* MessagePresenter.m */, - 8C9C83252B0C697A00A601BC /* MessagePresenter.h */, - ); - path = Presenter; - sourceTree = ""; - }; - 8C9C83262B0C697A00A601BC /* Protocol */ = { - isa = PBXGroup; - children = ( - 8C9C83272B0C697A00A601BC /* MessageProtocol.h */, - ); - path = Protocol; - sourceTree = ""; - }; - 8C9C83282B0C697A00A601BC /* Model */ = { - isa = PBXGroup; - children = ( - 8C9C83292B0C697A00A601BC /* ChatLimitModel.h */, - 8C9C832A2B0C697A00A601BC /* ChatLimitModel.m */, - ); - path = Model; - sourceTree = ""; - }; - 8C9C832B2B0C697A00A601BC /* View */ = { - isa = PBXGroup; - children = ( - 8C9C832C2B0C697A00A601BC /* NIMViews */, - 8C9C83382B0C697A00A601BC /* Session */, - ); - path = View; - sourceTree = ""; - }; - 8C9C832C2B0C697A00A601BC /* NIMViews */ = { - isa = PBXGroup; - children = ( - 8C9C832D2B0C697A00A601BC /* NIMBadgeView.m */, - 8C9C832E2B0C697A00A601BC /* UITableView+NIMScrollToBottom.h */, - 8C9C832F2B0C697A00A601BC /* UIView+NIM.h */, - 8C9C83302B0C697A00A601BC /* UITableView+NIMScrollToBottom.m */, - 8C9C83312B0C697A00A601BC /* NIMBadgeView.h */, - 8C9C83322B0C697A00A601BC /* UIView+NIM.m */, - ); - path = NIMViews; - sourceTree = ""; - }; 8C9C83332B0C697A00A601BC /* SessionList */ = { isa = PBXGroup; children = ( - 8C9C83342B0C697A00A601BC /* MewSessionListTableViewCell.m */, - 8C9C83352B0C697A00A601BC /* MewSessionListViewController.m */, 8C9C83362B0C697A00A601BC /* MewSessionListTableViewCell.h */, + 8C9C83342B0C697A00A601BC /* MewSessionListTableViewCell.m */, 8C9C83372B0C697A00A601BC /* MewSessionListViewController.h */, + 8C9C83352B0C697A00A601BC /* MewSessionListViewController.m */, ); path = SessionList; sourceTree = ""; }; - 8C9C83382B0C697A00A601BC /* Session */ = { - isa = PBXGroup; - children = ( - 8C9C83392B0C697A00A601BC /* SessionNavView.h */, - 8C9C833A2B0C697A00A601BC /* SessionMessageCell.m */, - 8C9C833B2B0C697A00A601BC /* SessionViewController.m */, - 8C9C833C2B0C697A00A601BC /* Content */, - 8C9C83442B0C697A00A601BC /* SessionNavView.m */, - 8C9C83452B0C697A00A601BC /* SessionMessageCell.h */, - 8C9C83462B0C697A00A601BC /* SessionViewController.h */, - ); - path = Session; - sourceTree = ""; - }; - 8C9C833C2B0C697A00A601BC /* Content */ = { - isa = PBXGroup; - children = ( - 8C9C833D2B0C697A00A601BC /* MessageContentImage.m */, - 8C9C833E2B0C697A00A601BC /* MessageContentText.h */, - 8C9C833F2B0C697A00A601BC /* MessageContentUnSupportView.h */, - 8C9C83402B0C697A00A601BC /* MessageContentProtocol.h */, - 8C9C83412B0C697A00A601BC /* MessageContentImage.h */, - 8C9C83422B0C697A00A601BC /* MessageContentUnSupportView.m */, - 8C9C83432B0C697A00A601BC /* MessageContentText.m */, - ); - path = Content; - sourceTree = ""; - }; - 8C9C83472B0C697A00A601BC /* Api */ = { - isa = PBXGroup; - children = ( - 8C9C83482B0C697A00A601BC /* Api+Message.m */, - 8C9C83492B0C697A00A601BC /* Api+Message.h */, - ); - path = Api; - sourceTree = ""; - }; - 8C9C834A2B0C697A00A601BC /* Tool */ = { - isa = PBXGroup; - children = ( - 8C9C834B2B0C697A00A601BC /* NIMMessageUtils.m */, - 8C9C834C2B0C697A00A601BC /* NIMMessageUtils.h */, - ); - path = Tool; - sourceTree = ""; - }; 8C9C834D2B0C697A00A601BC /* RTC */ = { isa = PBXGroup; children = ( @@ -2185,13 +2220,14 @@ buildActionMask = 2147483647; files = ( 8C9C84482B0C697A00A601BC /* YMMineSettingTableViewCell.m in Sources */, + 233757682B0CB577001D0B7F /* NIMMessageUtils.m in Sources */, 8C9C845C2B0C697A00A601BC /* ClientConfig.m in Sources */, 8C9C843B2B0C697A00A601BC /* TRTCRtcImpl.m in Sources */, 8C9C82C32B0C695600A601BC /* YYUtility.m in Sources */, 8C9C82C92B0C695600A601BC /* UploadFile.m in Sources */, + 2337575C2B0CB577001D0B7F /* SessionMessageCell.m in Sources */, 8C9C821F2B0C694900A601BC /* AppDelegate.m in Sources */, 8C9C84462B0C697A00A601BC /* YMMineSettingViewController.m in Sources */, - 8C9C84372B0C697A00A601BC /* SessionNavView.m in Sources */, 8C9C843D2B0C697A00A601BC /* YMMineCollectRoomPresenter.m in Sources */, 8C9C82A92B0C695600A601BC /* BaseNavigationController.m in Sources */, 8C9C84A72B0D920700A601BC /* MicroWaveView.m in Sources */, @@ -2204,7 +2240,6 @@ 8C9C843A2B0C697A00A601BC /* BaseRtcImpl.m in Sources */, 8C9C84672B0C697A00A601BC /* MewHeaderView.m in Sources */, 8C9C84662B0C697A00A601BC /* MewUserIntroductionView.m in Sources */, - 8C9C84362B0C697A00A601BC /* MessageContentText.m in Sources */, 8C9C82C42B0C695600A601BC /* YYUtility+Carrier.m in Sources */, 8C9C84172B0C697A00A601BC /* YMWebViewController.m in Sources */, 8C9C84432B0C697A00A601BC /* WalletInfoModel.m in Sources */, @@ -2214,8 +2249,10 @@ 8C9C84592B0C697A00A601BC /* TabbarViewController.m in Sources */, 8C9C82BE2B0C695600A601BC /* LoginTicketInfo.m in Sources */, 8C9C84542B0C697A00A601BC /* LoginInputView.m in Sources */, - 8C9C84392B0C697A00A601BC /* NIMMessageUtils.m in Sources */, + 233757632B0CB577001D0B7F /* MessageContentUnSupportView.m in Sources */, + 2337575E2B0CB577001D0B7F /* NIMMessageMaker.m in Sources */, 8C9C82B92B0C695600A601BC /* NSObject+AutoCoding.m in Sources */, + 233757622B0CB577001D0B7F /* MessageContentImage.m in Sources */, 8C9C84772B0C697A00A601BC /* MewLoginPhoneView.m in Sources */, 8C9C84692B0C697A00A601BC /* YMHomeFilterView.m in Sources */, 8C9C84532B0C697A00A601BC /* LoginForgetPasswordViewController.m in Sources */, @@ -2224,22 +2261,25 @@ 8C9C82B02B0C695600A601BC /* TTAlertButtonConfig.m in Sources */, 8C9C82B22B0C695600A601BC /* TTActionSheetConfig.m in Sources */, 8C9C841C2B0C697A00A601BC /* RoomInfoModel.m in Sources */, + 2337575B2B0CB577001D0B7F /* UIView+NIM.m in Sources */, 8C9C843F2B0C697A00A601BC /* FansInfoModel.m in Sources */, 8C9C84712B0C697A00A601BC /* MewPartyModel.m in Sources */, 8C9C82BF2B0C695600A601BC /* AccountModel.m in Sources */, + 233757652B0CB577001D0B7F /* SessionNavView.m in Sources */, 8C9C84722B0C697A00A601BC /* MewPartyListCollectionViewCell.m in Sources */, 8C9C846F2B0C697A00A601BC /* MewRoomMessageTableCell.m in Sources */, 8C9C84282B0C697A00A601BC /* YMRoomMessageParser.m in Sources */, 8C9C84302B0C697A00A601BC /* MewSessionListTableViewCell.m in Sources */, 8C9C84652B0C697A00A601BC /* MewShowVoiceView.m in Sources */, + 233757592B0CB577001D0B7F /* NIMBadgeView.m in Sources */, 8C9C846D2B0C697A00A601BC /* MewRoomRightView.m in Sources */, 8C9C84582B0C697A00A601BC /* MainPresenter.m in Sources */, + 233757562B0CB577001D0B7F /* MessagePresenter.m in Sources */, 8C9C84512B0C697A00A601BC /* LoginPasswordPresent.m in Sources */, 8C9C841F2B0C697A00A601BC /* StageView.m in Sources */, 8C9C844D2B0C697A00A601BC /* LoginForgetPasswordPresent.m in Sources */, 8C9C82C12B0C695600A601BC /* Api.m in Sources */, 8C9C844A2B0C697A00A601BC /* Api+Mine.m in Sources */, - 8C9C842B2B0C697A00A601BC /* MessagePresenter.m in Sources */, 8C9C82A82B0C695600A601BC /* BaseViewController.m in Sources */, 8C9C82C72B0C695600A601BC /* NSMutableDictionary+Safe.m in Sources */, 8C9C82C22B0C695600A601BC /* YYUtility+Device.m in Sources */, @@ -2253,8 +2293,6 @@ 8C9C84762B0C697A00A601BC /* MewRechargeSubView.m in Sources */, 8C9C82D42B0C695600A601BC /* NSObject+MJExtension.m in Sources */, 8C9C82C82B0C695600A601BC /* NSArray+Safe.m in Sources */, - 8C9C842E2B0C697A00A601BC /* UITableView+NIMScrollToBottom.m in Sources */, - 8C9C842C2B0C697A00A601BC /* ChatLimitModel.m in Sources */, 8C9C84402B0C697A00A601BC /* YMMineSettingItemModel.m in Sources */, 8C9C82CF2B0C695600A601BC /* GCDHelper.m in Sources */, 8C9C84232B0C697A00A601BC /* MicroStateModel.m in Sources */, @@ -2264,7 +2302,6 @@ 8C9C846A2B0C697A00A601BC /* Api+MewHome.m in Sources */, 8C9C847A2B0C697A00A601BC /* MewLoginViewController.m in Sources */, 8C9C844F2B0C697A00A601BC /* LoginFullInfoPresenter.m in Sources */, - 8C9C84332B0C697A00A601BC /* SessionViewController.m in Sources */, 8C9C82D22B0C695600A601BC /* YMIAPHelper.m in Sources */, 8C9C84A32B0D894100A601BC /* RoomFaceSendInfoModel.m in Sources */, 8C9C84222B0C697A00A601BC /* MicroExtModel.m in Sources */, @@ -2275,14 +2312,17 @@ 8C9C84732B0C697A00A601BC /* MewPartyViewController.m in Sources */, 8C9C82D32B0C695600A601BC /* YYReachability.m in Sources */, 8C4D53622AFD4CF700238AE6 /* main.m in Sources */, + 233757642B0CB577001D0B7F /* MessageContentText.m in Sources */, 8C9C84242B0C697A00A601BC /* YMRoomMessageContainerView.m in Sources */, 8C9C84612B0C697A00A601BC /* MewPushExclusiveVoiceView.m in Sources */, 8C9C845D2B0C697A00A601BC /* MewHomePresenter.m in Sources */, + 2337575A2B0CB577001D0B7F /* UITableView+NIMScrollToBottom.m in Sources */, 8C9C84252B0C697A00A601BC /* YMMessageInfoModel.m in Sources */, 8C9C82D12B0C695600A601BC /* RechargeStorage.m in Sources */, 8C9C84792B0C697A00A601BC /* MewLoginNumberViewController.m in Sources */, 8C9C841D2B0C697A00A601BC /* ThemeColor+Room.m in Sources */, 8C9C82D02B0C695600A601BC /* ThemeColor.m in Sources */, + 233757582B0CB577001D0B7F /* ChatLimitModel.m in Sources */, 8C9C82BA2B0C695600A601BC /* AccountInfoStorage.m in Sources */, 8C9C846E2B0C697A00A601BC /* MewRoomHeaderView.m in Sources */, 8C9C84492B0C697A00A601BC /* YMMineAboutUsViewController.m in Sources */, @@ -2290,16 +2330,19 @@ 8C9C84502B0C697A00A601BC /* LoginVerifCodePresent.m in Sources */, 8C9C844C2B0C697A00A601BC /* CustomAttachmentDecoder.m in Sources */, 8C9C845E2B0C697A00A601BC /* AudioPlayerManager.m in Sources */, - 8C9C84352B0C697A00A601BC /* MessageContentUnSupportView.m in Sources */, 8C9C848C2B0D2B8500A601BC /* GiftReceiveInfoModel.m in Sources */, 8C9C84572B0C697A00A601BC /* Api+Login.m in Sources */, + 2337575D2B0CB577001D0B7F /* SessionToolbarView.m in Sources */, 8C9C82CB2B0C695600A601BC /* TimeIntervalUtils.m in Sources */, 8C9C84192B0C697A00A601BC /* HomeRecommendRoomModel.m in Sources */, + 233757612B0CB577001D0B7F /* MessageToolMenuCollectionViewCell.m in Sources */, 8C9C82B62B0C695600A601BC /* TTPopupService.m in Sources */, - 8C9C842F2B0C697A00A601BC /* UIView+NIM.m in Sources */, + 233757662B0CB577001D0B7F /* SessionAudioRecordView.m in Sources */, + 233757672B0CB577001D0B7F /* Api+Message.m in Sources */, 8C9C841A2B0C697A00A601BC /* Api+Home.m in Sources */, 8C9C84AA2B0D930B00A601BC /* MicroNobleWaveView.m in Sources */, 8C9C842D2B0C697A00A601BC /* NIMBadgeView.m in Sources */, + 8C9C84292B0C697A00A601BC /* YMRoomMiniManager.m in Sources */, 8C9C82AD2B0C695600A601BC /* YMEmptyTableViewCell.m in Sources */, 8C9C845F2B0C697A00A601BC /* MewHomeViewController.m in Sources */, @@ -2309,6 +2352,7 @@ 8C9C82D52B0C695600A601BC /* YMHUDTool.m in Sources */, 8C9C849A2B0D675600A601BC /* YMRoomGiftAnimationParser.m in Sources */, 8C9C84342B0C697A00A601BC /* MessageContentImage.m in Sources */, + 8C9C82202B0C694900A601BC /* AppDelegate+ThirdConfig.m in Sources */, 8C9C84202B0C697A00A601BC /* MicroView.m in Sources */, 8C9C84522B0C697A00A601BC /* ThirdUserInfo.m in Sources */, @@ -2324,22 +2368,23 @@ 8C9C84902B0D439800A601BC /* YMRoomMessageFilter.m in Sources */, 8C9C84412B0C697A00A601BC /* MineCollectRoomModel.m in Sources */, 8C9C82CC2B0C695600A601BC /* DESEncrypt.m in Sources */, + 2337576B2B0CB630001D0B7F /* UIView+FilletCorner.m in Sources */, 8C9C82CA2B0C695600A601BC /* CountDownHelper.m in Sources */, 8C9C82B72B0C695600A601BC /* HttpRequestHelper.m in Sources */, 8C9C841B2B0C697A00A601BC /* YMRoomPresenter.m in Sources */, 8C9C82A72B0C695600A601BC /* YMCurrentVCStackManager.m in Sources */, 8C9C82B82B0C695600A601BC /* BaseMvpPresenter.m in Sources */, 8C9C84702B0C697A00A601BC /* MewRoomViewController.m in Sources */, - 8C9C84382B0C697A00A601BC /* Api+Message.m in Sources */, 8C9C82A62B0C695600A601BC /* UIImage+Utils.m in Sources */, 8C9C846C2B0C697A00A601BC /* MewSocialStageView.m in Sources */, - 8C9C84322B0C697A00A601BC /* SessionMessageCell.m in Sources */, 8C9C84682B0C697A00A601BC /* MewRightFollowVoiceCollectionCell.m in Sources */, 8C9C84452B0C697A00A601BC /* YMMineCollectRoomViewController.m in Sources */, 8C9C82AC2B0C695600A601BC /* NetImageView.m in Sources */, 8C9C82C52B0C695600A601BC /* YYUtility+App.m in Sources */, + 2337575F2B0CB577001D0B7F /* SessionInfoViewController.m in Sources */, 8C9C82CE2B0C695600A601BC /* YMWeakTimer.m in Sources */, 8C9C846B2B0C697A00A601BC /* MewSocialMicroView.m in Sources */, + 233757572B0CB577001D0B7F /* MessageMenuModel.m in Sources */, 8C9C844B2B0C697A00A601BC /* AttachmentModel.m in Sources */, 8C9C82C62B0C695600A601BC /* UIImage+RW.m in Sources */, 8C9C84562B0C697A00A601BC /* LoginFullInfoViewController.m in Sources */, @@ -2348,6 +2393,7 @@ 8C9C82BB2B0C695600A601BC /* BaseModel.m in Sources */, 8C9C84942B0D65C300A601BC /* YMRoomAnimationHitView.m in Sources */, 8C9C82B12B0C695600A601BC /* TTAlertMessageAttributedConfig.m in Sources */, + 233757602B0CB577001D0B7F /* SessionViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Session_Message_Game_InfoView_arrow.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Session_Message_Game_InfoView_arrow.imageset/Contents.json new file mode 100644 index 0000000..75ea0db --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Session_Message_Game_InfoView_arrow.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Session_Message_Game_InfoView_arrow@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Session_Message_Game_InfoView_arrow@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Session_Message_Game_InfoView_arrow.imageset/Session_Message_Game_InfoView_arrow@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Session_Message_Game_InfoView_arrow.imageset/Session_Message_Game_InfoView_arrow@2x.png new file mode 100644 index 0000000..5aaa608 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Session_Message_Game_InfoView_arrow.imageset/Session_Message_Game_InfoView_arrow@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Session_Message_Game_InfoView_arrow.imageset/Session_Message_Game_InfoView_arrow@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Session_Message_Game_InfoView_arrow.imageset/Session_Message_Game_InfoView_arrow@3x.png new file mode 100644 index 0000000..111bb9d Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/Session_Message_Game_InfoView_arrow.imageset/Session_Message_Game_InfoView_arrow@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_first.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_first.imageset/Contents.json new file mode 100644 index 0000000..a93d4b8 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_first.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_audio_playing_first@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_audio_playing_first@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_first.imageset/message_content_audio_playing_first@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_first.imageset/message_content_audio_playing_first@2x.png new file mode 100644 index 0000000..ec4fff3 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_first.imageset/message_content_audio_playing_first@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_first.imageset/message_content_audio_playing_first@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_first.imageset/message_content_audio_playing_first@3x.png new file mode 100644 index 0000000..8e9a468 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_first.imageset/message_content_audio_playing_first@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_second.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_second.imageset/Contents.json new file mode 100644 index 0000000..85d2372 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_second.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_audio_playing_second@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_audio_playing_second@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_second.imageset/message_content_audio_playing_second@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_second.imageset/message_content_audio_playing_second@2x.png new file mode 100644 index 0000000..8768677 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_second.imageset/message_content_audio_playing_second@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_second.imageset/message_content_audio_playing_second@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_second.imageset/message_content_audio_playing_second@3x.png new file mode 100644 index 0000000..f2a4fd1 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_second.imageset/message_content_audio_playing_second@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_third.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_third.imageset/Contents.json new file mode 100644 index 0000000..6b01271 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_third.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_audio_playing_third@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_audio_playing_third@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_third.imageset/message_content_audio_playing_third@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_third.imageset/message_content_audio_playing_third@2x.png new file mode 100644 index 0000000..5d9d85f Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_third.imageset/message_content_audio_playing_third@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_third.imageset/message_content_audio_playing_third@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_third.imageset/message_content_audio_playing_third@3x.png new file mode 100644 index 0000000..f1a0db5 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_audio_playing_third.imageset/message_content_audio_playing_third@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_charm.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_charm.imageset/Contents.json new file mode 100644 index 0000000..7306c50 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_charm.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_upgrade_charm@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_upgrade_charm@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_charm.imageset/message_content_upgrade_charm@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_charm.imageset/message_content_upgrade_charm@2x.png new file mode 100644 index 0000000..1f20a02 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_charm.imageset/message_content_upgrade_charm@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_charm.imageset/message_content_upgrade_charm@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_charm.imageset/message_content_upgrade_charm@3x.png new file mode 100644 index 0000000..f281ebf Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_charm.imageset/message_content_upgrade_charm@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_expre.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_expre.imageset/Contents.json new file mode 100644 index 0000000..baecfff --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_expre.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_content_upgrade_expre@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_content_upgrade_expre@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_expre.imageset/message_content_upgrade_expre@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_expre.imageset/message_content_upgrade_expre@2x.png new file mode 100644 index 0000000..e456a2a Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_expre.imageset/message_content_upgrade_expre@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_expre.imageset/message_content_upgrade_expre@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_expre.imageset/message_content_upgrade_expre@3x.png new file mode 100644 index 0000000..f00ef34 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_content_upgrade_expre.imageset/message_content_upgrade_expre@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_download_fail.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_download_fail.imageset/Contents.json new file mode 100644 index 0000000..5323689 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_download_fail.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_download_fail@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_download_fail@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_download_fail.imageset/message_session_download_fail@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_download_fail.imageset/message_session_download_fail@2x.png new file mode 100644 index 0000000..6e0d6cf Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_download_fail.imageset/message_session_download_fail@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_download_fail.imageset/message_session_download_fail@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_download_fail.imageset/message_session_download_fail@3x.png new file mode 100644 index 0000000..00ff77b Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_download_fail.imageset/message_session_download_fail@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_find_new_filtrate.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_find_new_filtrate.imageset/Contents.json new file mode 100644 index 0000000..b01c2cb --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_find_new_filtrate.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_find_new_filtrate@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_find_new_filtrate@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@2x.png new file mode 100644 index 0000000..250a3a1 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@3x.png new file mode 100644 index 0000000..2300a50 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_find_new_filtrate.imageset/message_session_find_new_filtrate@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_game_Invite_bg.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_game_Invite_bg.imageset/Contents.json new file mode 100644 index 0000000..1cf480f --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_game_Invite_bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_game_Invite_bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_game_Invite_bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_game_Invite_bg.imageset/message_session_game_Invite_bg@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_game_Invite_bg.imageset/message_session_game_Invite_bg@2x.png new file mode 100644 index 0000000..4ea881f Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_game_Invite_bg.imageset/message_session_game_Invite_bg@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_game_Invite_bg.imageset/message_session_game_Invite_bg@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_game_Invite_bg.imageset/message_session_game_Invite_bg@3x.png new file mode 100644 index 0000000..3effb65 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_game_Invite_bg.imageset/message_session_game_Invite_bg@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_gift.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_gift.imageset/Contents.json new file mode 100644 index 0000000..21f0b96 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_gift.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_menu_gift@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_menu_gift@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_gift.imageset/message_session_menu_gift@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_gift.imageset/message_session_menu_gift@2x.png new file mode 100644 index 0000000..4aa182f Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_gift.imageset/message_session_menu_gift@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_gift.imageset/message_session_menu_gift@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_gift.imageset/message_session_menu_gift@3x.png new file mode 100644 index 0000000..be62ed0 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_gift.imageset/message_session_menu_gift@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_photo.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_photo.imageset/Contents.json new file mode 100644 index 0000000..a1be4eb --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_photo.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_menu_photo@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_menu_photo@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_photo.imageset/message_session_menu_photo@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_photo.imageset/message_session_menu_photo@2x.png new file mode 100644 index 0000000..79b7c6d Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_photo.imageset/message_session_menu_photo@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_photo.imageset/message_session_menu_photo@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_photo.imageset/message_session_menu_photo@3x.png new file mode 100644 index 0000000..304f6e0 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_menu_photo.imageset/message_session_menu_photo@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_nav_report.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_nav_report.imageset/Contents.json new file mode 100644 index 0000000..59cd74b --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_nav_report.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_nav_report@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_nav_report@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_nav_report.imageset/message_session_nav_report@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_nav_report.imageset/message_session_nav_report@2x.png new file mode 100644 index 0000000..af2e68f Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_nav_report.imageset/message_session_nav_report@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_nav_report.imageset/message_session_nav_report@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_nav_report.imageset/message_session_nav_report@3x.png new file mode 100644 index 0000000..8c3ef80 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_nav_report.imageset/message_session_nav_report@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_audio.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_audio.imageset/Contents.json new file mode 100644 index 0000000..35e29e0 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_audio.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_tool_audio@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_tool_audio@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_audio.imageset/message_session_tool_audio@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_audio.imageset/message_session_tool_audio@2x.png new file mode 100644 index 0000000..9f9cce1 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_audio.imageset/message_session_tool_audio@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_audio.imageset/message_session_tool_audio@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_audio.imageset/message_session_tool_audio@3x.png new file mode 100644 index 0000000..2000cee Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_audio.imageset/message_session_tool_audio@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_more_normal.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_more_normal.imageset/Contents.json new file mode 100644 index 0000000..fca1bed --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_more_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_tool_more_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_tool_more_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_more_normal.imageset/message_session_tool_more_normal@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_more_normal.imageset/message_session_tool_more_normal@2x.png new file mode 100644 index 0000000..0156946 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_more_normal.imageset/message_session_tool_more_normal@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_more_normal.imageset/message_session_tool_more_normal@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_more_normal.imageset/message_session_tool_more_normal@3x.png new file mode 100644 index 0000000..8b25bb5 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_more_normal.imageset/message_session_tool_more_normal@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_text.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_text.imageset/Contents.json new file mode 100644 index 0000000..99db0b6 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_text.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_session_tool_text@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_session_tool_text@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_text.imageset/message_session_tool_text@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_text.imageset/message_session_tool_text@2x.png new file mode 100644 index 0000000..a84cc5c Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_text.imageset/message_session_tool_text@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_text.imageset/message_session_tool_text@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_text.imageset/message_session_tool_text@3x.png new file mode 100644 index 0000000..ab5e488 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_session_tool_text.imageset/message_session_tool_text@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_cancel.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_cancel.imageset/Contents.json new file mode 100644 index 0000000..1411ebd --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_cancel.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_tool_audio_record_cancel@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_tool_audio_record_cancel@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@2x.png new file mode 100644 index 0000000..2c3cc12 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@3x.png new file mode 100644 index 0000000..66e3656 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_cancel.imageset/message_tool_audio_record_cancel@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_first.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_first.imageset/Contents.json new file mode 100644 index 0000000..9d755c4 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_first.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_tool_audio_record_first@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_tool_audio_record_first@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_first.imageset/message_tool_audio_record_first@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_first.imageset/message_tool_audio_record_first@2x.png new file mode 100644 index 0000000..0d7d0fa Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_first.imageset/message_tool_audio_record_first@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_first.imageset/message_tool_audio_record_first@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_first.imageset/message_tool_audio_record_first@3x.png new file mode 100644 index 0000000..748ac52 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_first.imageset/message_tool_audio_record_first@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_second.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_second.imageset/Contents.json new file mode 100644 index 0000000..3dfe592 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_second.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_tool_audio_record_second@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_tool_audio_record_second@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_second.imageset/message_tool_audio_record_second@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_second.imageset/message_tool_audio_record_second@2x.png new file mode 100644 index 0000000..a0030e7 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_second.imageset/message_tool_audio_record_second@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_second.imageset/message_tool_audio_record_second@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_second.imageset/message_tool_audio_record_second@3x.png new file mode 100644 index 0000000..2a9a0b5 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_second.imageset/message_tool_audio_record_second@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_third.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_third.imageset/Contents.json new file mode 100644 index 0000000..1b04713 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_third.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "message_tool_audio_record_third@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "message_tool_audio_record_third@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_third.imageset/message_tool_audio_record_third@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_third.imageset/message_tool_audio_record_third@2x.png new file mode 100644 index 0000000..0193645 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_third.imageset/message_tool_audio_record_third@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_third.imageset/message_tool_audio_record_third@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_third.imageset/message_tool_audio_record_third@3x.png new file mode 100644 index 0000000..c94e48a Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/message_tool_audio_record_third.imageset/message_tool_audio_record_third@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/session_list_clean.imageset/Contents.json b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/session_list_clean.imageset/Contents.json new file mode 100644 index 0000000..4112e1b --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/session_list_clean.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "session_list_clean@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "session_list_clean@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/session_list_clean.imageset/session_list_clean@2x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/session_list_clean.imageset/session_list_clean@2x.png new file mode 100644 index 0000000..f065f5f Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/session_list_clean.imageset/session_list_clean@2x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/session_list_clean.imageset/session_list_clean@3x.png b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/session_list_clean.imageset/session_list_clean@3x.png new file mode 100644 index 0000000..d4aa8a1 Binary files /dev/null and b/yinmeng-ios/yinmeng-ios/Assets.xcassets/Mew/session/session_list_clean.imageset/session_list_clean@3x.png differ diff --git a/yinmeng-ios/yinmeng-ios/Base/UI/UIImage/UIView+FilletCorner.h b/yinmeng-ios/yinmeng-ios/Base/UI/UIImage/UIView+FilletCorner.h new file mode 100644 index 0000000..348c2d3 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Base/UI/UIImage/UIView+FilletCorner.h @@ -0,0 +1,20 @@ +// +// UIView+FilletCorner.h +// yinmeng-ios +// +// Created by duoban on 2023/11/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIView (FilletCorner) +- (void)setCornerWithLeftTopCorner:(CGFloat)leftTop + rightTopCorner:(CGFloat)rigtTop + bottomLeftCorner:(CGFloat)bottemLeft + bottomRightCorner:(CGFloat)bottemRight + size:(CGSize)size; +@end + +NS_ASSUME_NONNULL_END diff --git a/yinmeng-ios/yinmeng-ios/Base/UI/UIImage/UIView+FilletCorner.m b/yinmeng-ios/yinmeng-ios/Base/UI/UIImage/UIView+FilletCorner.m new file mode 100644 index 0000000..802d49d --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Base/UI/UIImage/UIView+FilletCorner.m @@ -0,0 +1,41 @@ +// +// UIView+FilletCorner.m +// yinmeng-ios +// +// Created by duoban on 2023/11/21. +// + +#import "UIView+FilletCorner.h" + +@implementation UIView (FilletCorner) +- (void)setCornerWithLeftTopCorner:(CGFloat)leftTop + rightTopCorner:(CGFloat)rigtTop + bottomLeftCorner:(CGFloat)bottemLeft + bottomRightCorner:(CGFloat)bottemRight + size:(CGSize)size { + + CGFloat width = size.width; + CGFloat height = size.height; + UIBezierPath *maskPath = [UIBezierPath bezierPath]; + maskPath.lineWidth = 1.0; + maskPath.lineCapStyle = kCGLineCapRound; + maskPath.lineJoinStyle = kCGLineJoinRound; + [maskPath moveToPoint:CGPointMake(bottemRight, height)]; //左下角 + [maskPath addLineToPoint:CGPointMake(width - bottemRight, height)]; + + [maskPath addQuadCurveToPoint:CGPointMake(width, height- bottemRight) controlPoint:CGPointMake(width, height)]; //右下角的圆弧 + [maskPath addLineToPoint:CGPointMake(width, rigtTop)]; //右边直线 + + [maskPath addQuadCurveToPoint:CGPointMake(width - rigtTop, 0) controlPoint:CGPointMake(width, 0)]; //右上角圆弧 + [maskPath addLineToPoint:CGPointMake(leftTop, 0)]; //顶部直线 + + [maskPath addQuadCurveToPoint:CGPointMake(0, leftTop) controlPoint:CGPointMake(0, 0)]; //左上角圆弧 + [maskPath addLineToPoint:CGPointMake(0, height - bottemLeft)]; //左边直线 + [maskPath addQuadCurveToPoint:CGPointMake(bottemLeft, height) controlPoint:CGPointMake(0, height)]; //左下角圆弧 + + CAShapeLayer *maskLayer = [CAShapeLayer layer]; + maskLayer.frame = CGRectMake(0, 0, size.width, size.height); + maskLayer.path = maskPath.CGPath; + self.layer.mask = maskLayer; +} +@end diff --git a/yinmeng-ios/yinmeng-ios/Info.plist b/yinmeng-ios/yinmeng-ios/Info.plist index f30405a..64de112 100644 --- a/yinmeng-ios/yinmeng-ios/Info.plist +++ b/yinmeng-ios/yinmeng-ios/Info.plist @@ -2,6 +2,12 @@ + NSCameraUsageDescription + “Mew”需要您的同意,才能访问进行拍照并上传您的图片,便于他人查看 + NSPhotoLibraryUsageDescription + “Mew”需要您的同意,才可以访问相册并选择您需要上传的图片,便于他人查看 + NSPhotoLibraryAddUsageDescription + “Mew”需要您的同意,才可以存储相片到相册 NSMicrophoneUsageDescription "Mew"需要您的同意,才可以进行语音聊天 NSAppTransportSecurity diff --git a/yinmeng-ios/yinmeng-ios/Main/Mew/Message/View/SessionList/MewSessionListTableViewCell.m b/yinmeng-ios/yinmeng-ios/Main/Mew/Message/View/SessionList/MewSessionListTableViewCell.m index 5963ea9..90c1028 100644 --- a/yinmeng-ios/yinmeng-ios/Main/Mew/Message/View/SessionList/MewSessionListTableViewCell.m +++ b/yinmeng-ios/yinmeng-ios/Main/Mew/Message/View/SessionList/MewSessionListTableViewCell.m @@ -18,7 +18,8 @@ #import "NIMMessageUtils.h" #import "TimeIntervalUtils.h" #import "UIView+NIM.h" - +#import "UIView+FilletCorner.h" +#import "YMMacro.h" @interface MewSessionListTableViewCell() /// 内容 @@ -86,13 +87,15 @@ #pragma mark - LayoutSubviews - (void)layoutSubviews { [super layoutSubviews]; - self.badgeView.nim_right = self.nim_width - 24 - 15; - self.badgeView.nim_top = 8.0; + self.badgeView.nim_right = self.nim_width - 28; + self.badgeView.nim_top = 50.0; } #pragma mark - Init View - (void)initView { + self.backgroundColor = [UIColor clearColor]; + self.contentView.backgroundColor = [UIColor clearColor]; [self.contentView addSubview:self.containerView]; [self.containerView addSubview:self.avatarImageView]; [self.containerView addSubview:self.nameLabel]; @@ -103,37 +106,42 @@ } - (void)initLayout { + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(10); - make.bottom.equalTo(self.contentView); + make.height.mas_equalTo(72); // make.top.mas_equalTo(10); - make.left.mas_offset(24); - make.right.mas_offset(-24); + make.left.mas_offset(16); + make.width.mas_equalTo(KScreenWidth - 32); }]; [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { // make.top.offset(10); make.centerY.equalTo(self.containerView); - make.left.mas_equalTo(10); - make.height.width.mas_equalTo(54); + make.left.mas_equalTo(8); + make.height.width.mas_equalTo(60); + }]; + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { +// make.bottom.mas_equalTo(self).offset(-15); + make.top.mas_equalTo(9); + make.right.mas_equalTo(self.containerView).offset(-8); + make.height.mas_equalTo(17); }]; - [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-2); - make.left.mas_equalTo(self.avatarImageView.mas_right).offset(15); + make.top.mas_equalTo(9); + make.height.mas_equalTo(22); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(12); + make.right.equalTo(self.timeLabel.mas_left).mas_offset(-5); }]; [self.messageLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.nameLabel); - make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2); + make.top.mas_equalTo(39); + make.height.mas_equalTo(20); make.right.mas_equalTo(self.timeLabel.mas_left).offset(-15); }]; - [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { -// make.bottom.mas_equalTo(self).offset(-15); - make.centerY.equalTo(self.avatarImageView); - make.right.mas_equalTo(self.containerView).offset(-10); - }]; + // [self.divider mas_makeConstraints:^(MASConstraintMaker *make) { // make.right.offset(-15); @@ -148,9 +156,8 @@ - (UIView *)containerView { if (!_containerView) { _containerView = [[UIView alloc] init]; - _containerView.backgroundColor = UIColor.grayColor; - _containerView.layer.cornerRadius = 20; - _containerView.layer.masksToBounds = YES; + [_containerView setCornerWithLeftTopCorner:36 rightTopCorner:10 bottomLeftCorner:36 bottomRightCorner:10 size:CGSizeMake(KScreenWidth - 32, 72)]; + _containerView.backgroundColor = UIColorFromRGB(0x525566); } return _containerView; @@ -165,7 +172,7 @@ _avatarImageView = [[NetImageView alloc] initWithConfig:config]; _avatarImageView.contentMode = UIViewContentModeScaleAspectFill; _avatarImageView.layer.masksToBounds = YES; - _avatarImageView.layer.cornerRadius = 54.f / 2; + _avatarImageView.layer.cornerRadius = 60 / 2; _avatarImageView.backgroundColor = UIColor.blueColor; } return _avatarImageView; @@ -176,7 +183,7 @@ _nameLabel = [[UILabel alloc] initWithFrame:CGRectZero]; _nameLabel.backgroundColor = [UIColor clearColor]; _nameLabel.font = [UIFont systemFontOfSize:15.f weight:UIFontWeightMedium]; - _nameLabel.textColor = ThemeColor.mainTextColor; + _nameLabel.textColor = [UIColor whiteColor]; _nameLabel.text = @"用户昵称"; } return _nameLabel; @@ -186,8 +193,8 @@ if (!_messageLabel) { _messageLabel = [[UILabel alloc] initWithFrame:CGRectZero]; _messageLabel.backgroundColor = [UIColor clearColor]; - _messageLabel.font = [UIFont systemFontOfSize:13.f]; - _messageLabel.textColor = ThemeColor.secondTextColor; + _messageLabel.font = [UIFont systemFontOfSize:14.f]; + _messageLabel.textColor = UIColorRGBAlpha(0xFFFFFF, 0.8); _messageLabel.text = @"用户回复信息内容"; } return _messageLabel; @@ -196,12 +203,12 @@ - (UILabel *)timeLabel { if (!_timeLabel) { _timeLabel = [[UILabel alloc] initWithFrame:CGRectZero]; - _timeLabel.backgroundColor = [UIColor clearColor]; + _timeLabel.font = [UIFont systemFontOfSize:12.f weight:UIFontWeightLight]; _timeLabel.textColor = UIColor.whiteColor; [_timeLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; [_timeLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - _timeLabel.text = @"2023-10-30"; + } return _timeLabel; } @@ -209,9 +216,19 @@ - (NIMBadgeView *)badgeView { if (!_badgeView) { _badgeView = [NIMBadgeView viewWithBadgeTip:@"1"]; + _badgeView.layer.cornerRadius = 9; + _badgeView.layer.masksToBounds = YES; } return _badgeView; } +//- (UIView *)divider { +// if (!_divider) { +// _divider = [[UIView alloc]init]; +// _divider.backgroundColor = UIColor.blackColor; +// _divider.hidden = YES; +// } +// return _divider; +//} @end diff --git a/yinmeng-ios/yinmeng-ios/Main/Mew/Message/View/SessionList/MewSessionListViewController.m b/yinmeng-ios/yinmeng-ios/Main/Mew/Message/View/SessionList/MewSessionListViewController.m index 948a714..3ffb08d 100644 --- a/yinmeng-ios/yinmeng-ios/Main/Mew/Message/View/SessionList/MewSessionListViewController.m +++ b/yinmeng-ios/yinmeng-ios/Main/Mew/Message/View/SessionList/MewSessionListViewController.m @@ -13,7 +13,8 @@ /// Tool #import "YMMacro.h" #import "ClientConfig.h" - +#import +#import "SessionViewController.h" @interface MewSessionListViewController () @@ -21,6 +22,7 @@ @property (nonatomic, strong) UIView *headerView; @property (nonatomic, strong) UILabel *titleLabel; @property (nonatomic, strong) UIButton *cleanMessageButton; +@property(nonatomic,strong) UIImageView *sessionBgView; /** * 会话列表 */ @@ -174,17 +176,24 @@ #pragma mark - UITableViewDelegate, UITableViewDataSource - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ - return 10; -// return self.recentSessions.count; + + return self.recentSessions.count; } - (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath { MewSessionListTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([MewSessionListTableViewCell class])]; - + [cell renderWithSession:self.recentSessions[indexPath.row]]; return cell; } +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + NIMRecentSession *recentSession = self.recentSessions[indexPath.row]; + SessionViewController *vc = [[SessionViewController alloc] initWithSession:recentSession.session]; + [self.navigationController pushViewController:vc animated:YES]; + +} #pragma mark - Action Event /// 一键已读信息 @@ -246,6 +255,7 @@ #pragma mark - Init - (void)initViews { + [self.view addSubview:self.sessionBgView]; [self.view addSubview:self.headerView]; [self.headerView addSubview:self.titleLabel]; [self.headerView addSubview:self.cleanMessageButton]; @@ -254,10 +264,18 @@ } - (void)initLayout { + [self.sessionBgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; self.headerView.frame = CGRectMake(0, 0, KScreenWidth, 100); - self.titleLabel.frame = CGRectMake(30, kStatusBarHeight, 200, 30); - self.cleanMessageButton.frame = CGRectMake(KScreenWidth - 40 - 24, CGRectGetMinX(self.titleLabel.frame) + 10.0, 24, 24); + self.titleLabel.frame = CGRectMake(20, kStatusBarHeight+10, 200, 30); + self.sessionListView.frame = CGRectMake(0, CGRectGetMaxY(self.headerView.frame), KScreenWidth, KScreenHeight - CGRectGetMaxY(self.headerView.frame)); + [self.cleanMessageButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.height.mas_equalTo(28); + make.right.mas_equalTo(-16); + make.centerY.equalTo(self.titleLabel); + }]; } #pragma mark - Get @@ -271,7 +289,7 @@ - (UIView *)headerView { if (!_headerView) { _headerView = [[UIView alloc] init]; - _headerView.backgroundColor = UIColor.whiteColor; + _headerView.backgroundColor = UIColor.clearColor; } return _headerView; } @@ -280,8 +298,8 @@ if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; _titleLabel.text = @"消息中心"; - _titleLabel.textColor = UIColor.blackColor; - _titleLabel.font = kFontBold(20); + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.font = kFontMedium(18); } return _titleLabel; } @@ -289,7 +307,7 @@ - (UIButton *)cleanMessageButton { if (!_cleanMessageButton) { _cleanMessageButton = [[UIButton alloc] init]; - _cleanMessageButton.backgroundColor = UIColor.blueColor; + [_cleanMessageButton setBackgroundImage:kImage(@"session_list_clean") forState:UIControlStateNormal]; [_cleanMessageButton addTarget:self action:@selector(cleanMessageButtonAction) forControlEvents:UIControlEventTouchUpInside]; } return _cleanMessageButton; @@ -304,11 +322,17 @@ _sessionListView.delegate = self; _sessionListView.dataSource = self; _sessionListView.showsVerticalScrollIndicator = NO; - _sessionListView.rowHeight = 80; + _sessionListView.rowHeight = 82; [_sessionListView registerClass:[MewSessionListTableViewCell class] forCellReuseIdentifier:NSStringFromClass([MewSessionListTableViewCell class])]; } return _sessionListView; } - +- (UIImageView *)sessionBgView{ + if(!_sessionBgView){ + _sessionBgView = [UIImageView new]; + _sessionBgView.image = kImage(@"mew_home_bg"); + } + return _sessionBgView; +} @end diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/Model/MessageMenuModel.h b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/Model/MessageMenuModel.h new file mode 100644 index 0000000..37f66ea --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/Model/MessageMenuModel.h @@ -0,0 +1,27 @@ +// +// MessageMenuModel.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, MessageMenuType) { + ///发送图片 + MessageMenuType_Photo = 1, + ///送礼物 + MessageMenuType_Gift +}; + +@interface MessageMenuModel : NSObject +///图片 +@property (nonatomic,strong) NSString *imageName; +///类型 +@property (nonatomic,assign) MessageMenuType type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/Model/MessageMenuModel.m b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/Model/MessageMenuModel.m new file mode 100644 index 0000000..f1a9c81 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/Model/MessageMenuModel.m @@ -0,0 +1,12 @@ +// +// MessageMenuModel.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/21. +// + +#import "MessageMenuModel.h" + +@implementation MessageMenuModel + +@end diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/Content/MessageToolMenuCollectionViewCell.h b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/Content/MessageToolMenuCollectionViewCell.h new file mode 100644 index 0000000..3b10e23 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/Content/MessageToolMenuCollectionViewCell.h @@ -0,0 +1,16 @@ +// +// MessageToolMenuCollectionViewCell.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MessageToolMenuCollectionViewCell : UICollectionViewCell +@property (nonatomic,copy) NSString *imageName; +@end + +NS_ASSUME_NONNULL_END diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/Content/MessageToolMenuCollectionViewCell.m b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/Content/MessageToolMenuCollectionViewCell.m new file mode 100644 index 0000000..cfe588b --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/Content/MessageToolMenuCollectionViewCell.m @@ -0,0 +1,56 @@ +// +// MessageToolMenuCollectionViewCell.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/20. +// + +#import "MessageToolMenuCollectionViewCell.h" +///Third +#import +@interface MessageToolMenuCollectionViewCell () + +@property (nonatomic,strong) UIImageView *logoImageView; + +@end + + +@implementation MessageToolMenuCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self.contentView addSubview:self.logoImageView]; +} + +- (void)initSubViewConstraints { + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self.contentView); + }]; +} + +#pragma mark - Getters And Setters +- (void)setImageName:(NSString *)imageName { + _imageName = imageName; + if (_imageName) { + self.logoImageView.image = [UIImage imageNamed:_imageName]; + } +} + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + } + return _logoImageView; +} + +@end diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/NIMMessageMaker.h b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/NIMMessageMaker.h new file mode 100644 index 0000000..1df71fb --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/NIMMessageMaker.h @@ -0,0 +1,34 @@ +// +// NIMMessageMaker.h +// xplan-ios +// +// Created by zu on 2021/11/28. +// + +#import +#import + +@interface NIMMessageMaker : NSObject + ++ (NIMMessage*)msgWithText:(NSString *)text; + ++ (NIMMessage *)msgWithAudio:(NSString *)filePath; + ++ (NIMMessage *)msgWithImage:(UIImage *)image; + ++ (NIMMessage *)msgWithImagePath:(NSString *)path; + ++ (NIMMessage *)msgWithImageData:(NSData *)data extension:(NSString *)extension; + ++ (NIMMessage *)msgWithVideo:(NSString *)filePath; + +@end + + +@interface NIMCommentMaker : NSObject + ++ (NIMQuickComment *)commentWithType:(int64_t)type + content:(NSString *)content + ext:(NSString *)ext; + +@end diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/NIMMessageMaker.m b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/NIMMessageMaker.m new file mode 100644 index 0000000..1be8e8c --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/NIMMessageMaker.m @@ -0,0 +1,121 @@ +// +// NIMMessageMaker.m +// xplan-ios +// +// Created by zu on 2021/11/28. +// + +#import "NIMMessageMaker.h" +#import "YMConstant.h" + +@implementation NIMMessageMaker + ++ (NIMMessage*)msgWithText:(NSString*)text +{ + NIMMessage *textMessage = [[NIMMessage alloc] init]; + textMessage.text = text; + [self setupMessage:textMessage]; + return textMessage; +} + ++ (NIMMessage*)msgWithAudio:(NSString*)filePath +{ + NIMAudioObject *audioObject = [[NIMAudioObject alloc] initWithSourcePath:filePath scene:NIMNOSSceneTypeMessage]; + NIMMessage *message = [[NIMMessage alloc] init]; + message.messageObject = audioObject; + message.text = @"发来了一段语音"; + [self setupMessage:message]; + return message; +} + ++ (NIMMessage*)msgWithVideo:(NSString*)filePath +{ + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; + NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; + NIMVideoObject *videoObject = [[NIMVideoObject alloc] initWithSourcePath:filePath scene:NIMNOSSceneTypeMessage]; + videoObject.displayName = [NSString stringWithFormat:@"视频发送于%@", dateString]; + NIMMessage *message = [[NIMMessage alloc] init]; + message.messageObject = videoObject; + message.apnsContent = @"发来了一段视频"; + [self setupMessage:message]; + return message; +} + ++ (NIMMessage*)msgWithImage:(UIImage*)image +{ + NIMImageObject *imageObject = [[NIMImageObject alloc] initWithImage:image scene:NIMNOSSceneTypeMessage]; + NIMImageOption *option = [[NIMImageOption alloc] init]; + option.compressQuality = 0.7; + imageObject.option = option; + return [NIMMessageMaker generateImageMessage:imageObject]; +} + ++ (NIMMessage *)msgWithImagePath:(NSString*)path +{ + NIMImageObject * imageObject = [[NIMImageObject alloc] initWithFilepath:path scene:NIMNOSSceneTypeMessage]; + return [NIMMessageMaker generateImageMessage:imageObject]; +} + ++ (NIMMessage *)msgWithImageData:(NSData *)data extension:(NSString *)extension +{ + NIMImageObject *imageObject = [[NIMImageObject alloc] initWithData:data extension:extension]; + return [NIMMessageMaker generateImageMessage:imageObject]; +} + ++ (NIMMessage *)generateImageMessage:(NIMImageObject *)imageObject +{ + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; + NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; + imageObject.displayName = [NSString stringWithFormat:@"图片发送于%@", dateString]; + NIMMessage *message = [[NIMMessage alloc] init]; + message.messageObject = imageObject; + message.apnsContent = @"发来了一张图片"; + [self setupMessage:message]; + return message; +} + ++ (void)setupMessage:(NIMMessage *)message +{ + message.apnsPayload = @{ + @"apns-collapse-id": message.messageId, + }; + + NIMMessageSetting *setting = [[NIMMessageSetting alloc] init]; + setting.scene = NIMNOSSceneTypeMessage; + setting.apnsEnabled = YES; + message.setting = setting; + + NIMAntiSpamOption *option = [NIMAntiSpamOption new]; + option.yidunEnabled = YES; + option.businessId = KeyWithType(keyType_YiDunBussinessId); + message.antiSpamOption = option; +} + + +@end + + +@implementation NIMCommentMaker + ++ (NIMQuickComment *)commentWithType:(int64_t)type + content:(NSString *)content + ext:(NSString *)ext +{ + NIMQuickComment *comment = [[NIMQuickComment alloc] init]; + comment.ext = ext; + NIMQuickCommentSetting *setting = [[NIMQuickCommentSetting alloc] init]; + setting.needPush = YES; + setting.needBadge = YES; + setting.pushTitle = @"你收到了一条快捷评论"; + setting.pushContent = content; + setting.pushPayload = @{ + @"key" : @"value" + }; + comment.setting = setting; + comment.replyType = type; + return comment; +} + +@end diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionAudioRecordView.h b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionAudioRecordView.h new file mode 100644 index 0000000..65b59a6 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionAudioRecordView.h @@ -0,0 +1,26 @@ +// +// SessionAudioRecordView.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/21. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionAudioRecordView : UIView + +- (void)configAudioRecord:(NSString *)imageName title:(NSString *)title isAnimation:(BOOL)isAnimation; +///开始录音 +- (void)beginAudioRecord; +///取消录音 +- (void)cancelAudioRecord; +///完成录音 +- (void)finishAudioRecord; +///更新进度 +- (void)updateAudioRecordProgress:(NSTimeInterval)recordTime; + +@end + +NS_ASSUME_NONNULL_END diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionAudioRecordView.m b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionAudioRecordView.m new file mode 100644 index 0000000..dd9d4d7 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionAudioRecordView.m @@ -0,0 +1,148 @@ +// +// SessionAudioRecordView.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/21. +// + +#import "SessionAudioRecordView.h" +///Third +#import +#import + +@interface SessionAudioRecordView () +///背景 +@property (nonatomic,strong) UIView * backView; +///显示图片 +@property (nonatomic,strong) UIImageView *logoImageView; +///显示标题 +@property (nonatomic,strong) UILabel *titleLabel; +///当前时间 +@property (nonatomic,strong) UILabel *timeLabel; +@end + +@implementation SessionAudioRecordView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Public Method +- (void)configAudioRecord:(NSString *)imageName title:(NSString *)title isAnimation:(BOOL)isAnimation { + self.logoImageView.image = [UIImage imageNamed:imageName]; + if (isAnimation) { + [self.logoImageView startAnimating]; + } else { + [self.logoImageView stopAnimating]; + } + self.titleLabel.text = title; +} + +///开始录音 +- (void)beginAudioRecord { + self.timeLabel.text = @"00:00"; + [[NIMSDK sharedSDK].mediaManager recordForDuration:60]; +} +///取消录音 +- (void)cancelAudioRecord { + self.timeLabel.text = @"00:00"; + [[NIMSDK sharedSDK].mediaManager cancelRecord]; +} +///完成录音 +- (void)finishAudioRecord { + self.timeLabel.text = @"00:00"; + [[NIMSDK sharedSDK].mediaManager stopRecord]; +} + +- (void)updateAudioRecordProgress:(NSTimeInterval)recordTime { + NSInteger minutes = (NSInteger)recordTime / 60; + NSInteger seconds = (NSInteger)recordTime % 60; + self.timeLabel.text = [NSString stringWithFormat:@"%02zd:%02zd", minutes, seconds]; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.backView]; + [self.backView addSubview:self.logoImageView]; + [self.backView addSubview:self.titleLabel]; + [self.backView addSubview:self.timeLabel]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(250, 200)); + }]; + + [self.timeLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView).offset(15); + }]; + + [self.backView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.mas_equalTo(self); + }]; + + [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.backView); + make.top.mas_equalTo(self.backView).offset(50); + make.size.mas_equalTo(CGSizeMake(90, 72)); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.backView); + make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(25); + }]; +} + +#pragma mark - Getters And Setters +- (UIView *)backView { + if (!_backView) { + _backView = [[UIView alloc] init]; + _backView.backgroundColor = [UIColor blackColor]; + _backView.layer.masksToBounds = YES; + _backView.layer.cornerRadius = 10; + } + return _backView; +} + + +- (UIImageView *)logoImageView { + if (!_logoImageView) { + _logoImageView = [[UIImageView alloc] init]; + _logoImageView.userInteractionEnabled = YES; + UIImage *firstImage = [UIImage imageNamed:@"message_tool_audio_record_first"]; + UIImage *secondImage = [UIImage imageNamed:@"message_tool_audio_record_second"]; + UIImage *thirdImage = [UIImage imageNamed:@"message_tool_audio_record_third"]; + _logoImageView.animationImages = @[firstImage, secondImage, thirdImage]; + _logoImageView.animationDuration = 1; + _logoImageView.animationRepeatCount = HUGE; + } + return _logoImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15]; + _titleLabel.textColor = [UIColor whiteColor]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)timeLabel { + if (!_timeLabel) { + _timeLabel = [[UILabel alloc] init]; + _timeLabel.font = [UIFont systemFontOfSize:17 weight:UIFontWeightMedium]; + _timeLabel.textColor = [UIColor whiteColor]; + _timeLabel.textAlignment = NSTextAlignmentCenter; + } + return _timeLabel; +} + + +@end diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionInfoViewController.h b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionInfoViewController.h new file mode 100644 index 0000000..edf7205 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionInfoViewController.h @@ -0,0 +1,17 @@ +// +// SessionInfoViewController.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/25. +// + +#import "BaseViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface SessionInfoViewController : BaseViewController +///用户的id +@property (nonatomic,copy) NSString *userId; +@end + +NS_ASSUME_NONNULL_END diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionInfoViewController.m b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionInfoViewController.m new file mode 100644 index 0000000..1686f71 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionInfoViewController.m @@ -0,0 +1,295 @@ +// +// SessionInfoViewController.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/25. +// + +#import "SessionInfoViewController.h" +///Third +#import +#import +///Tool +#import "ThemeColor.h" +#import "NetImageView.h" +#import "TTPopup.h" + +///View +#import "YMWebViewController.h" + + +@interface SessionInfoViewController () +///最外面的容器 +@property (nonatomic,strong) UIStackView *stackView; +///用户信息的view +@property (nonatomic,strong) UIView * infoView; +///头像 +@property (nonatomic,strong) NetImageView *avatarImageView; +///昵称 +@property (nonatomic,strong) UILabel *nickLabel; +///个人主页 +@property (nonatomic,strong) UILabel *titleLabel; +///箭头 +@property (nonatomic,strong) UIImageView *arrowImageView; +///显示举报 加入黑名单 +@property (nonatomic,strong) UIStackView *contentStackView; +///举报 +@property (nonatomic,strong) UIButton *reportButton; +///分割线 +@property (nonatomic,strong) UIView * lineView; +///加入黑名单 +@property (nonatomic,strong) UIButton *blackButton; + +@end + +@implementation SessionInfoViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self initData]; + [self initSubViews]; + [self initSubViewConstraints]; +} + +#pragma mark - Private Method +- (void)initData { + [[NIMSDK sharedSDK].userManager fetchUserInfos:@[self.userId] completion:^(NSArray * _Nullable users, NSError * _Nullable error) { + if (!error) { + NIMUser * user = users.firstObject; + self.avatarImageView.imageUrl = user.userInfo.avatarUrl; + self.nickLabel.text = user.userInfo.nickName; + } else { + [self showErrorToast:@"用户信息请求失败,请重试"]; + [self.navigationController popViewControllerAnimated:YES]; + } + }]; + + self.blackButton.selected = [[NIMSDK sharedSDK].userManager isUserInBlackList:self.userId]; +} + +- (void)initSubViews { + self.title = @"加入黑名单"; + [self.view addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.infoView]; + [self.stackView addArrangedSubview:self.contentStackView]; + + [self.infoView addSubview:self.avatarImageView]; + [self.infoView addSubview:self.nickLabel]; + [self.infoView addSubview:self.titleLabel]; + [self.infoView addSubview:self.arrowImageView]; + + [self.contentStackView addArrangedSubview:self.reportButton]; + [self.contentStackView addArrangedSubview:self.lineView]; + [self.contentStackView addArrangedSubview:self.blackButton]; +} + +- (void)initSubViewConstraints { + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.view).offset(10); + }]; + + [self.infoView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(60); + }]; + + [self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + make.left.mas_equalTo(self.infoView).offset(15); + make.centerY.mas_equalTo(self.infoView); + }]; + + [self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.infoView); + make.left.mas_equalTo(self.avatarImageView.mas_right).offset(5); + make.right.mas_lessThanOrEqualTo(self.titleLabel.mas_left).offset(-5); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.mas_equalTo(self.arrowImageView.mas_left).offset(-5); + make.centerY.mas_equalTo(self.infoView); + }]; + + [self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(6.5, 11)); + make.centerY.mas_equalTo(self.infoView); + make.right.mas_equalTo(self.infoView).offset(-10); + }]; + + [self.reportButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + }]; + + [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(0.5); + }]; + + [self.blackButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(44); + }]; +} + +#pragma mark - Event Response +- (void)blackButtonAction:(UIButton *)sender { + NSString *title = nil; + NSString *message = nil; + BOOL isInBlack = [[NIMSDK sharedSDK].userManager isUserInBlackList:self.userId]; + if (!isInBlack) { + title = @"加入黑名单"; + message = @"加入黑名单,你将不再收到对方的消息"; + } else { + title = @"移除黑名单"; + message = @"移除黑名单,你将正常收到对方的消息"; + } + + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = title; + config.message = message; + [TTPopup alertWithConfig:config confirmHandler:^{ + if (isInBlack) { + [[NIMSDK sharedSDK].userManager removeFromBlackBlackList:self.userId completion:^(NSError * _Nullable error) { + if (error == nil) { + [self showErrorToast:@"已经成功将对方移除黑名单"]; + self.blackButton.selected = NO; + } else { + [self showErrorToast:error.description]; + } + + }]; + } else { + [[NIMSDK sharedSDK].userManager addToBlackList:self.userId completion:^(NSError * _Nullable error) { + if (error == nil) { + [self showErrorToast:@"已经成功将对方加入黑名单"]; + self.blackButton.selected = YES; + } else { + [self showErrorToast:error.description]; + } + }]; + } + } cancelHandler:^{ + + }]; +} + +- (void)reportButtonAction:(UIButton *)sender { + [self showSuccessToast:@"举报成功"]; +} + +- (void)didTapUserRecognizer { +// XPMineUserInfoViewController * mineVC = [[XPMineUserInfoViewController alloc] init]; +// mineVC.uid = self.userId.integerValue; +// [self.navigationController pushViewController:mineVC animated:YES]; +} + +#pragma mark - Getters And Setters +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 20; + } + return _stackView; +} + +- (UIView *)infoView { + if (!_infoView) { + _infoView = [[UIView alloc] init]; + _infoView.backgroundColor = [ThemeColor appCellBackgroundColor]; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapUserRecognizer)]; + [_infoView addGestureRecognizer:tap]; + _infoView.hidden = YES; + } + return _infoView; +} + +- (NetImageView *)avatarImageView { + if (!_avatarImageView) { + NetImageConfig * config = [[NetImageConfig alloc]init]; + config.imageType = ImageTypeUserIcon; + config.placeHolder = [UIImageConstant defaultAvatarPlaceholder]; + _avatarImageView = [[NetImageView alloc] initWithConfig:config]; + _avatarImageView.layer.masksToBounds = YES; + _avatarImageView.layer.cornerRadius = 20; + } + return _avatarImageView; +} + +- (UILabel *)nickLabel { + if (!_nickLabel) { + _nickLabel = [[UILabel alloc] init]; + _nickLabel.font = [UIFont systemFontOfSize:15]; + _nickLabel.textColor = [ThemeColor mainTextColor]; + } + return _nickLabel; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.text = @"个人主页"; + _titleLabel.textColor = [ThemeColor secondTextColor]; + } + return _titleLabel; +} + +- (UIImageView *)arrowImageView { + if (!_arrowImageView) { + _arrowImageView = [[UIImageView alloc] init]; + _arrowImageView.userInteractionEnabled = YES; + _arrowImageView.image = [UIImage imageNamed:@"room_setting_arrow"]; + } + return _arrowImageView; +} + + +- (UIStackView *)contentStackView { + if (!_contentStackView) { + _contentStackView = [[UIStackView alloc] init]; + _contentStackView.axis = UILayoutConstraintAxisVertical; + _contentStackView.distribution = UIStackViewDistributionFill; + _contentStackView.alignment = UIStackViewAlignmentFill; + _contentStackView.spacing = 0; + } + return _contentStackView; +} + +- (UIButton *)reportButton { + if (!_reportButton) { + _reportButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_reportButton setTitle:@"举报" forState:UIControlStateNormal]; + [_reportButton setTitleColor:[ThemeColor mainTextColor] forState:UIControlStateNormal]; + _reportButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + [_reportButton setBackgroundColor:[ThemeColor appCellBackgroundColor]]; + [_reportButton addTarget:self action:@selector(reportButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _reportButton; +} + +- (UIView *)lineView { + if (!_lineView) { + _lineView = [[UIView alloc] init]; + _lineView.backgroundColor = [ThemeColor dividerColor]; + } + return _lineView; +} + +- (UIButton *)blackButton { + if (!_blackButton) { + _blackButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_blackButton setTitle:@"加入黑名单" forState:UIControlStateNormal]; + [_blackButton setTitle:@"移除黑名单" forState:UIControlStateSelected]; + [_blackButton setTitleColor:[ThemeColor mainTextColor] forState:UIControlStateNormal]; + [_blackButton setTitleColor:[ThemeColor mainTextColor] forState:UIControlStateSelected]; + _blackButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + [_blackButton setBackgroundColor:[ThemeColor appCellBackgroundColor]]; + [_blackButton addTarget:self action:@selector(blackButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _blackButton; +} + + +@end diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionMessageCell.m b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionMessageCell.m index 2be20e5..b08ded8 100644 --- a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionMessageCell.m +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionMessageCell.m @@ -237,12 +237,44 @@ - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { - + [self initViews]; + [self initLayout]; } return self; } +- (void)initViews { + self.backgroundColor = UIColor.clearColor; + [self.contentView addSubview:self.leftAvatar]; + [self.contentView addSubview:self.rightAvatar]; + [self.contentView addSubview:self.messageBackground]; + [self.contentView addSubview:self.failButton]; +} +- (void)initLayout { + [self.leftAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.mas_equalTo(self).offset(15); + make.width.height.mas_equalTo(45); + }]; + + [self.rightAvatar mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self).offset(15); + make.right.mas_equalTo(self).offset(-15); + make.width.height.mas_equalTo(45); + }]; + + [self.messageBackground mas_makeConstraints:^(MASConstraintMaker *make) { + self.messageBackgroundLeft = make.left.mas_equalTo(self.leftAvatar.mas_right).offset(15); + self.messageBackgroundRight = make.right.mas_equalTo(self.rightAvatar.mas_left).offset(-15); + make.top.mas_equalTo(self).offset(20); + }]; + + [self.failButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(20, 20)); + make.centerY.mas_equalTo(self.messageBackground); + make.left.mas_equalTo(self.messageBackground.mas_right).offset(10); + }]; +} #pragma mark - Get - (NetImageView *)leftAvatar { if (!_leftAvatar) { diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionNavView.m b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionNavView.m index 3bd6dac..370fcef 100644 --- a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionNavView.m +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionNavView.m @@ -8,6 +8,7 @@ #import "SessionNavView.h" /// Tool #import "ThemeColor.h" +#import #import "YMMacro.h" /// Third #import @@ -90,6 +91,32 @@ make.right.equalTo(self.reportButton.mas_left).mas_offset(-14); }]; } +- (void)setUserId:(NSString *)userId { + _userId = userId; + if (_userId.length > 0) { + [[NIMSDK sharedSDK].userManager fetchUserInfos:@[self.userId] completion:^(NSArray * _Nullable users, NSError * _Nullable error) { + if (!error) { + self.title = users[0].userInfo.nickName; + } + }]; + } +} +- (void)setTitle:(NSString *)title { + _title = title; + if (_title) { + NSString * nick = title; + if (nick.length > 10 ) { + nick = [nick substringToIndex:10]; + } + self.nickLabel.text = nick; + } +} + +- (void)setIsLike:(BOOL)isLike { + _isLike = isLike; + self.likeButton.hidden = _isLike; +} + #pragma mark - Get - (UIButton *)backButton { diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionToolbarView.h b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionToolbarView.h new file mode 100644 index 0000000..6dcb70f --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionToolbarView.h @@ -0,0 +1,29 @@ +// +// MessageToolbarView.h +// xplan-ios +// +// Created by 冯硕 on 2022/4/20. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class MessageMenuModel; +@protocol SessionToolbarViewDelegate + +- (void)keyboardWillChangeFrame:(CGRect)rect; +- (void)sendTextMessage:(NSString *)text; +- (void)audioRecordCompletion:(NSString *)recordPath; +- (void)didSelectMenuItem:(MessageMenuModel *)info; +@end + +@interface SessionToolbarView : UIView +///代理 +@property (nonatomic,weak) id delegate; +@property(nonatomic,assign) int model; +@property (nonatomic, assign, getter=isSendDisabled) BOOL sendDisabled; +///折叠 菜单view +- (void)foldMenuView; +@end + +NS_ASSUME_NONNULL_END diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionToolbarView.m b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionToolbarView.m new file mode 100644 index 0000000..3f4caa2 --- /dev/null +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionToolbarView.m @@ -0,0 +1,485 @@ +// +// MessageToolbarView.m +// xplan-ios +// +// Created by 冯硕 on 2022/4/20. +// + +#import "SessionToolbarView.h" +///Third +#import +#import +///Tool +#import "ThemeColor.h" +#import "YMMacro.h" +#import "NSArray+Safe.h" +///Model +#import "MessageMenuModel.h" +///View +#import "MessageToolMenuCollectionViewCell.h" +#import "SessionAudioRecordView.h" + +#define TOOL_HEIGHT 60 +#define MENU_HEIGHT 130 + +@interface SessionToolbarView () +///最大的那个容器 +@property (nonatomic,strong) UIStackView *stackView; +///上部分的功能的容器 +@property (nonatomic,strong) UIStackView *toolStackView; +///切换语音和文字的按钮 +@property (nonatomic,strong) UIButton *changeButton; +///更多按钮 +@property (nonatomic,strong) UIButton *moreButton; +///语音和输入框的 +@property (nonatomic,strong) UIStackView *audioStackView; +///输入框背景 +@property (nonatomic,strong) UIView * inputBackView; +///输入框 +@property (nonatomic,strong) UITextField *inputView; +///语音 +@property (nonatomic,strong) UIButton *audioButton; +///列表 +@property (nonatomic,strong) UICollectionView *collectionView; +///底部的view +@property (nonatomic,strong) UIView * placeView; +///菜单数据 +@property (nonatomic,strong) NSArray *menuList; +///录音的view +@property (nonatomic,strong) SessionAudioRecordView *audioRecordView; +@end + +@implementation SessionToolbarView + +- (void)dealloc { + [[NIMSDK sharedSDK].mediaManager removeDelegate:self]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [[NIMSDK sharedSDK].mediaManager addDelegate:self]; + [self addNotification]; + [self addAudioButtonAction]; + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} +#pragma mark - Public Method +- (void)foldMenuView { + [self.inputView resignFirstResponder]; + if (self.collectionView.hidden == NO) { + self.collectionView.hidden = YES; + self.moreButton.selected = NO; + } +} +#pragma mark - Private Method +- (void)addAudioButtonAction { + ///button 周围有一个70px的范围 超出这个范围的话 就是out 在这个范围的话就是in 从范围外到范围内的话就是enter 从范围内到范围外的话exit + [self.audioButton addTarget:self action:@selector(audioTouchDownAction) forControlEvents:UIControlEventTouchDown]; + [self.audioButton addTarget:self action:@selector(audioTouchUpOutsideAction) forControlEvents:UIControlEventTouchUpOutside]; + [self.audioButton addTarget:self action:@selector(audioTouchUpInsideAction) forControlEvents:UIControlEventTouchUpInside]; + [self.audioButton addTarget:self action:@selector(audioTouchDragEnterAction) forControlEvents:UIControlEventTouchDragEnter]; + [self.audioButton addTarget:self action:@selector(audioTouchDragExitAction) forControlEvents:UIControlEventTouchDragExit]; +} + +- (void)addNotification { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; +} + +- (void)initSubViews { + self.backgroundColor = [ThemeColor appCellBackgroundColor]; + [self addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.toolStackView]; + [self.stackView addArrangedSubview:self.collectionView]; + [self.stackView addArrangedSubview:self.placeView]; + + [self.toolStackView addArrangedSubview:self.changeButton]; + [self.toolStackView addArrangedSubview:self.audioStackView]; + [self.toolStackView addArrangedSubview:self.moreButton]; + + [self.audioStackView addArrangedSubview:self.inputBackView]; + [self.audioStackView addArrangedSubview:self.audioButton]; + + [self.inputBackView addSubview:self.inputView]; +} + +- (void)initSubViewConstraints { + [self mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.stackView); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self).inset(15); + make.top.mas_equalTo(self); + }]; + + [self.toolStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(TOOL_HEIGHT); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(MENU_HEIGHT); + }]; + + [self.placeView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kSafeAreaBottomHeight); + }]; + + [self.changeButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + }]; + + [self.moreButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(40, 40)); + }]; + + [self.audioStackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(40); + }]; + + [self.inputView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.inputBackView.mas_left).offset(16); + make.top.bottom.mas_equalTo(self.inputBackView); + make.right.mas_equalTo(self.inputBackView).offset(-5); + }]; +} + +#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.menuList.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + MessageToolMenuCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([MessageToolMenuCollectionViewCell class]) forIndexPath:indexPath]; + MessageMenuModel * model = [self.menuList safeObjectAtIndex1:indexPath.row]; + cell.imageName = model.imageName; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + if (self.menuList.count > 0) { + MessageMenuModel * model = [self.menuList safeObjectAtIndex1:indexPath.row]; + if (self.delegate && [self.delegate respondsToSelector:@selector(didSelectMenuItem:)]) { + [self.delegate didSelectMenuItem:model]; + } + } +} + +#pragma mark - UITextFieldDelegate +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + if (textField.text.length >0) { + if (self.delegate && [self.delegate respondsToSelector:@selector(sendTextMessage:)]) { + [self.delegate sendTextMessage:textField.text]; + textField.text = nil; + } + } + return YES; +} +#pragma mark - NIMMediaManagerDelegate +/** + * 开始录制音频的回调 + * + * @param filePath 录制的音频的文件路径 + * @param error 错误信息 + * @discussion 如果录音失败,filePath 有可能为 nil + */ +- (void)recordAudio:(nullable NSString *)filePath didBeganWithError:(nullable NSError *)error { + NSLog(@"开始录制语音"); +} + +/** + * 录制音频完成后的回调 + * + * @param filePath 录制完成的音频文件路径 + * @param error 错误信息 + */ +- (void)recordAudio:(nullable NSString *)filePath didCompletedWithError:(nullable NSError *)error { + if (filePath.length > 0 && error == nil) { + if (self.delegate && [self.delegate respondsToSelector:@selector(audioRecordCompletion:)]) { + [self.delegate audioRecordCompletion:filePath]; + } + } + NSLog(@"录制音频完成后的回调 %@", filePath); +} + +/** + * 录音被取消的回调 + */ +- (void)recordAudioDidCancelled { + NSLog(@"录音被取消的回调"); +} + +/** + * 音频录制进度更新回调 + * + * @param currentTime 当前录制的时间 + */ +- (void)recordAudioProgress:(NSTimeInterval)currentTime { + [self.audioRecordView updateAudioRecordProgress:currentTime]; +} + +/** + * 录音开始被打断回调 + */ +- (void)recordAudioInterruptionBegin { + [self.audioRecordView cancelAudioRecord]; +} + +#pragma mark - Event Response +- (void)keyboardWillShow:(NSNotification *)notification { + if (self.collectionView.hidden == NO) { + self.collectionView.hidden = YES; + self.moreButton.selected = NO; + } + NSDictionary *userInfo = [notification userInfo]; + CGRect keyboardEndFrame = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; + if (CGRectIsNull(keyboardEndFrame)) { + return; + } + UIViewAnimationCurve animationCurve = [userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; + NSInteger animationCurveOption = (animationCurve << 16); + double animationDuration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView animateWithDuration:animationDuration delay:0.0 options:animationCurveOption animations:^{ + if (self.delegate && [self.delegate respondsToSelector:@selector(keyboardWillChangeFrame:)]) { + [self.delegate keyboardWillChangeFrame:keyboardEndFrame]; + } + } completion:^(BOOL finished) { + + }]; +} + +- (void)keyboardWillHidden:(NSNotification*)notification { + CGRect keyboardEndFrame = CGRectMake(0, 0, 0, 0); + [UIView animateWithDuration:0.25 animations:^{ + if (self.delegate && [self.delegate respondsToSelector:@selector(keyboardWillChangeFrame:)]) { + [self.delegate keyboardWillChangeFrame:keyboardEndFrame]; + } + }]; +} + +- (void)changeButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + self.inputBackView.hidden = sender.selected; + self.audioButton.hidden = !sender.selected; + self.collectionView.hidden = YES; + self.moreButton.selected = NO; + if (sender.selected) { + [self.inputView resignFirstResponder]; + } else { + [self.inputView becomeFirstResponder]; + } +} + +- (void)moreButtonAction:(UIButton *)sender { + sender.selected = !sender.selected; + self.collectionView.hidden = !sender.selected; + [self.inputView resignFirstResponder]; + CGRect keyboardEndFrame = CGRectMake(0, 0, 0, 0); + [UIView animateWithDuration:0.25 animations:^{ + if (self.delegate && [self.delegate respondsToSelector:@selector(keyboardWillChangeFrame:)]) { + [self.delegate keyboardWillChangeFrame:keyboardEndFrame]; + } + }]; +} + + +- (void)audioTouchDownAction { + self.audioButton.selected = YES; + ///开始录音 + if (!self.audioRecordView.superview) { + [[UIApplication sharedApplication].keyWindow addSubview:self.audioRecordView]; + [self.audioRecordView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.mas_equalTo(self.audioRecordView.superview); + }]; + [self.audioRecordView configAudioRecord:@"message_tool_audio_record_first" title:@"手指上滑,取消发送" isAnimation:YES]; + [self.audioRecordView beginAudioRecord]; + } + +} + +- (void)audioTouchUpOutsideAction { + self.audioButton.selected = NO; + ///取消录音 + [self.audioRecordView cancelAudioRecord]; + [self.audioRecordView removeFromSuperview]; +} + +- (void)audioTouchUpInsideAction { + self.audioButton.selected = NO; + ///手指抬起 完成录音 + [self.audioRecordView finishAudioRecord]; + [self.audioRecordView removeFromSuperview]; +} + +- (void)audioTouchDragEnterAction { + ///手指上滑 取消发送 + [self.audioRecordView configAudioRecord:@"message_tool_audio_record_first" title:@"手指上滑,取消发送" isAnimation:YES]; +} + +- (void)audioTouchDragExitAction { + ///松开手指 取消发送 + [self.audioRecordView configAudioRecord:@"message_tool_audio_record_cancel" title:@"松开手指 取消发送" isAnimation:NO]; +} + +#pragma mark - Getters And Setters +- (void)setSendDisabled:(BOOL)sendDisabled { + self.userInteractionEnabled = !sendDisabled; + if (sendDisabled) { + self.inputView.text = @""; + NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:_model == 2 ? @"互相关注成为好友可发起聊天" : @"暂时无法私聊" attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [ThemeColor secondTextColor]}]; + self.inputView.attributedPlaceholder = attribute; + } else { + NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:@"请输入消息" attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [ThemeColor secondTextColor]}]; + self.inputView.attributedPlaceholder = attribute; + } +} + +- (UIStackView *)stackView { + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisVertical; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentFill; + _stackView.spacing = 0; + } + return _stackView; +} + +- (UIStackView *)toolStackView { + if (!_toolStackView) { + _toolStackView = [[UIStackView alloc] init]; + _toolStackView.axis = UILayoutConstraintAxisHorizontal; + _toolStackView.distribution = UIStackViewDistributionFill; + _toolStackView.alignment = UIStackViewAlignmentCenter; + _toolStackView.spacing = 8; + } + return _toolStackView; +} + +- (UIButton *)changeButton { + if (!_changeButton) { + _changeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_changeButton setImage:[UIImage imageNamed:@"message_session_tool_text"] forState:UIControlStateNormal]; + [_changeButton setImage:[UIImage imageNamed:@"message_session_tool_audio"] forState:UIControlStateSelected]; + [_changeButton addTarget:self action:@selector(changeButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _changeButton; +} + +- (UIStackView *)audioStackView { + if (!_audioStackView) { + _audioStackView = [[UIStackView alloc] init]; + _audioStackView.axis = UILayoutConstraintAxisHorizontal; + _audioStackView.distribution = UIStackViewDistributionFill; + _audioStackView.alignment = UIStackViewAlignmentFill; + _audioStackView.spacing = 0; + } + return _audioStackView; +} + +- (UIView *)inputBackView { + if (!_inputBackView) { + _inputBackView = [[UIView alloc] init]; + _inputBackView.backgroundColor = UIColorFromRGB(0xF1F1FA); + _inputBackView.layer.masksToBounds = YES; + _inputBackView.layer.cornerRadius = 4; + } + return _inputBackView; +} + +- (UITextField *)inputView{ + if (!_inputView) { + _inputView = [[UITextField alloc] init]; + NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:@"请输入消息" attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [ThemeColor secondTextColor]}]; + _inputView.attributedPlaceholder = attribute; + _inputView.borderStyle = UITextBorderStyleNone; + _inputView.tintColor = UIColorFromRGB(0xFFE710); + _inputView.textColor = [ThemeColor mainTextColor]; + _inputView.font = [UIFont systemFontOfSize:12.f]; + _inputView.delegate = self; + _inputView.autocorrectionType = UITextAutocorrectionTypeNo; + _inputView.returnKeyType = UIReturnKeySend; + } + return _inputView; +} + +- (UIButton *)audioButton { + if (!_audioButton) { + _audioButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_audioButton setTitle:@"按住说话" forState:UIControlStateNormal]; + [_audioButton setTitle:@"松开结束" forState:UIControlStateSelected]; + [_audioButton setTitleColor:[ThemeColor mainTextColor] forState:UIControlStateNormal]; + _audioButton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _audioButton.layer.masksToBounds = YES; + _audioButton.layer.cornerRadius = 4; + _audioButton.backgroundColor = UIColorFromRGB(0xF1F1FA); + _audioButton.hidden = YES; + } + return _audioButton; +} + +- (UIButton *)moreButton { + if (!_moreButton) { + _moreButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_moreButton setImage:[UIImage imageNamed:@"message_session_tool_more_normal"] forState:UIControlStateNormal]; + [_moreButton setImage:[UIImage imageNamed:@"message_session_tool_more_select"] forState:UIControlStateSelected]; + [_moreButton addTarget:self action:@selector(moreButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _moreButton; +} + +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); + layout.itemSize = CGSizeMake(48, 48); + layout.minimumLineSpacing = 24; + layout.minimumInteritemSpacing = 10; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.backgroundColor = [UIColor clearColor]; + _collectionView.hidden = YES; + [_collectionView registerClass:[MessageToolMenuCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([MessageToolMenuCollectionViewCell class])]; + } + return _collectionView; +} + +- (UIView *)placeView { + if (!_placeView) { + _placeView = [[UIView alloc] init]; + _placeView.backgroundColor = [UIColor clearColor]; + } + return _placeView; +} + +- (NSArray *)menuList { + if (!_menuList) { + MessageMenuModel * phototModel = [[MessageMenuModel alloc] init]; + phototModel.imageName = @"message_session_menu_photo"; + phototModel.type= MessageMenuType_Photo; + + MessageMenuModel * giftModel = [[MessageMenuModel alloc] init]; + giftModel.imageName = @"message_session_menu_gift"; + giftModel.type= MessageMenuType_Gift; + + _menuList = @[phototModel]; + } + return _menuList; +} + +- (SessionAudioRecordView *)audioRecordView { + if (!_audioRecordView) { + _audioRecordView = [[SessionAudioRecordView alloc] init]; + } + return _audioRecordView; +} + + + +@end diff --git a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionViewController.m b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionViewController.m index f058777..7b89b0d 100644 --- a/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionViewController.m +++ b/yinmeng-ios/yinmeng-ios/Main/YinMeng/Message/View/Session/SessionViewController.m @@ -23,20 +23,24 @@ /// Presenter #import "MessagePresenter.h" #import "MessageProtocol.h" +#import /// Model #import "ChatLimitModel.h" #import "UserInfoModel.h" +#import "SessionInfoViewController.h" +#import "SessionToolbarView.h" +#import "NIMMessageMaker.h" +#import "MessageMenuModel.h" - -@interface SessionViewController () + NIMChatManagerDelegate, NIMConversationManagerDelegate, NIMMediaManagerDelegate,TZImagePickerControllerDelegate> ///导航栏 @property (nonatomic,strong) SessionNavView *sessionNavView; /// 聊天内容 @property (nonatomic, strong) UITableView * sessionTableView; ///输入框 -//@property (nonatomic,strong) SessionToolbarView *toolbarView; +@property (nonatomic,strong) SessionToolbarView *toolbarView; // @property (nonatomic, strong) NIMSession * session; @@ -50,14 +54,21 @@ @end @implementation SessionViewController - +- (BOOL)isHiddenNavBar { + return YES; +} +- (MessagePresenter *)createPresenter { + return [[MessagePresenter alloc] init]; +} #pragma mark - Life Cycle - (void)viewDidLoad { [super viewDidLoad]; [self initViews]; + self.view.backgroundColor = [UIColor whiteColor]; [[NIMSDK sharedSDK].chatManager addDelegate:self]; [[NIMSDK sharedSDK].conversationManager addDelegate:self]; + [self initHeaderAndFooterRefresh]; } - (void)viewWillAppear:(BOOL)animated { @@ -96,7 +107,9 @@ // 举报 - (void)sessionNavView:(SessionNavView *)view didClickReport:(UIButton *)sender { - + SessionInfoViewController * reportVC = [[SessionInfoViewController alloc] init]; + reportVC.userId = self.session.sessionId; + [self.navigationController pushViewController:reportVC animated:YES]; } #pragma mark - SessionMessageCellDelegate(cell点击事件回调) @@ -237,17 +250,36 @@ #pragma mark - UITableViewDelegate, UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.messages.count; } -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - SessionMessageCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([SessionMessageCell class])]; - +- (nonnull UITableViewCell *)tableView:(nonnull UITableView *)tableView cellForRowAtIndexPath:(nonnull NSIndexPath *)indexPath { + NIMMessage * message = [self.messages safeObjectAtIndex1:indexPath.row]; + NSString * identifier = [SessionMessageCell cellContent:message]; + ///从复用池中获取所需要的cell + SessionMessageCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier]; + if (!cell) { + ///如果没有的话 根据identifier 注册一下 重新获取一下即可 + [tableView registerClass:[SessionMessageCell class] forCellReuseIdentifier:identifier]; + ///如果注册过了 就不需要判断cell是否为空 + cell = [tableView dequeueReusableCellWithIdentifier:identifier]; + } cell.delegate = self; + cell.selectionStyle = 0; + [cell renderWithMessage:[self.messages safeObjectAtIndex1:indexPath.row]]; return cell; } +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + NIMMessage *msg = [self.messages safeObjectAtIndex1:indexPath.row]; + return [SessionMessageCell measureHeight:msg]; +} + #pragma mark - Private Method (获取聊天数据) /// 初始化刷新控件 @@ -323,6 +355,8 @@ #pragma mark - Init View - (void)initViews { [self.view addSubview:self.sessionNavView]; + [self.view addSubview:self.sessionTableView]; + [self.view addSubview:self.toolbarView]; [self initLayout]; @@ -332,8 +366,84 @@ make.height.mas_equalTo(kNavigationHeight); make.left.top.right.mas_equalTo(self.view); }]; + [self.toolbarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.bottom.mas_equalTo(self.view); + }]; + [self.sessionTableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self.view); + make.top.mas_equalTo(self.sessionNavView.mas_bottom).mas_offset(10); + make.bottom.mas_equalTo(self.toolbarView.mas_top); + }]; + +} +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { + [self.toolbarView foldMenuView]; +} +#pragma mark - MessageToolbarViewDelegate +- (void)keyboardWillChangeFrame:(CGRect)rect { + CGFloat heightFromBottom = rect.size.height; + heightFromBottom = MAX(0.0, heightFromBottom); + [self.toolbarView mas_updateConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self.view).offset(-heightFromBottom); + }]; + [self.sessionTableView nim_scrollToBottom:NO]; } +- (void)sendTextMessage:(NSString *)text { + NIMMessage *message = [NIMMessageMaker msgWithText:text]; + [[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:self.session error:nil]; +} + +- (void)didSelectMenuItem:(MessageMenuModel *)info { + + UIWindow * currentWindow; + for (int i = 0; i < [UIApplication sharedApplication].windows.count; i++) { + UIWindow * window = [[UIApplication sharedApplication].windows safeObjectAtIndex1:i]; + if(window.tag == 1000) { + currentWindow = window; + break; + } + } + + if (currentWindow) { + currentWindow.windowLevel = -1; + } + switch (info.type) { + case MessageMenuType_Photo: + { + TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self]; + imagePickerVc.modalPresentationStyle = UIModalPresentationOverFullScreen; + imagePickerVc.allowPickingVideo = NO; + imagePickerVc.allowTakeVideo = NO; + imagePickerVc.naviBgColor = [ThemeColor appCellBackgroundColor]; + imagePickerVc.naviTitleColor = [ThemeColor mainTextColor]; + imagePickerVc.barItemTextColor = [ThemeColor mainTextColor]; + [self presentViewController:imagePickerVc animated:YES completion:nil]; + } + break; + + default: + break; + } +} + +- (void)audioRecordCompletion:(NSString *)recordPath { + NIMMessage *message = [NIMMessageMaker msgWithAudio:recordPath]; + [[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:self.session error:nil]; +} + +#pragma mark - TZImagePickerControllerDelegate +- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray *)infos { + [photos enumerateObjectsUsingBlock:^(UIImage * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if (obj) { + // 构造出具体会话 + NIMMessage * message = [NIMMessageMaker msgWithImage:obj]; + // 发送消息 + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:self.session error:nil]; + } + }]; +} #pragma mark - Get - (SessionNavView *)sessionNavView { if (!_sessionNavView) { @@ -348,7 +458,7 @@ _sessionTableView = [[UITableView alloc] init]; _sessionTableView.delegate = self; _sessionTableView.dataSource = self; - _sessionTableView.backgroundColor = UIColor.clearColor; + _sessionTableView.backgroundColor = UIColorFromRGB(0xF8F8FB); _sessionTableView.separatorStyle = UITableViewCellSeparatorStyleNone; _sessionTableView.showsVerticalScrollIndicator = NO; [_sessionTableView registerClass:[SessionMessageCell class] forCellReuseIdentifier:NSStringFromClass([SessionMessageCell class])]; @@ -364,5 +474,12 @@ } return _messages; } - +- (SessionToolbarView *)toolbarView { + if (!_toolbarView) { + _toolbarView = [[SessionToolbarView alloc] init]; + _toolbarView.delegate = self; + _toolbarView.sendDisabled = NO; + } + return _toolbarView; +} @end