diff --git a/Podfile b/Podfile index 87622e40..80704acb 100644 --- a/Podfile +++ b/Podfile @@ -61,6 +61,7 @@ target 'xplan-ios' do #vap礼物动画 pod 'QGVAPlayer' pod 'IQKeyboardManager', '~> 6.5.5' + pod 'TZImagePickerController' #调试 pod 'LookinServer', :configurations => ['Debug'] diff --git a/Podfile.lock b/Podfile.lock index eecfa9e9..238c6c9e 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -74,6 +74,7 @@ PODS: - Protobuf (~> 3.4) - SZTextView (1.3.0) - TXLiteAVSDK_TRTC (8.7.10102) + - TZImagePickerController (3.8.1) - UMCommon (7.3.5): - UMDevice - UMDevice (2.0.5) @@ -119,6 +120,7 @@ DEPENDENCIES: - SVGAPlayer (~> 2.3) - SZTextView - TXLiteAVSDK_TRTC (from `http://pod-1252463788.cosgz.myqcloud.com/liteavsdkspec/TXLiteAVSDK_TRTC.podspec`) + - TZImagePickerController - UMCommon - UMDevice - YYText @@ -131,6 +133,7 @@ SPEC REPOS: - NTESBaseComponent - NTESQuickPass - QGVAPlayer + - TZImagePickerController trunk: - AFNetworking - AgoraRtcEngine_iOS @@ -204,6 +207,7 @@ SPEC CHECKSUMS: SVGAPlayer: 318b85a78b61292d6ae9dfcd651f3f0d1cdadd86 SZTextView: 094dc6acc9beec537685c545d6e3e0d4975174e1 TXLiteAVSDK_TRTC: e78365f430926a1064e175fd8d97601559e7d3d1 + TZImagePickerController: 943511626019431372cf908f24c114521e484f0e UMCommon: ab4d875ddefe1b06c60b577e4a58bc4d433ee067 UMDevice: c13bbb2e8ca6c67d1e23e03162553e3ec5a8b5b0 YYCache: 8105b6638f5e849296c71f331ff83891a4942952 @@ -211,6 +215,6 @@ SPEC CHECKSUMS: YYText: 5c461d709e24d55a182d1441c41dc639a18a4849 YYWebImage: 5f7f36aee2ae293f016d418c7d6ba05c4863e928 -PODFILE CHECKSUM: 5f8d1ca73148363e1d2c4871b0136f5edc0ee8e5 +PODFILE CHECKSUM: f2682cf01b67e68f847979b09786b508a737bed6 COCOAPODS: 1.11.2 diff --git a/xplan-ios/Main/Message/View/Session/Content/MessageContentImage.m b/xplan-ios/Main/Message/View/Session/Content/MessageContentImage.m index 07525eb4..a7383d27 100644 --- a/xplan-ios/Main/Message/View/Session/Content/MessageContentImage.m +++ b/xplan-ios/Main/Message/View/Session/Content/MessageContentImage.m @@ -7,16 +7,17 @@ #import "MessageContentImage.h" #import "NetImageView.h" - +#import "SDPhotoBrowser.h" #import #import #define MESSAGE_IMAGE_PADDING 10 #define MESSAGE_IMAGE_MAX_SIZE (CONTENT_WIDTH_MAX / 3 * 2) -@interface MessageContentImage() +@interface MessageContentImage() @property (nonatomic, strong) NetImageView * messageImage; +@property (nonatomic,strong) NIMImageObject *imageObject; @end @@ -56,6 +57,7 @@ [[NIMSDK sharedSDK].chatManager fetchMessageAttachment:message error:nil]; } else { NIMImageObject * imageObject = (NIMImageObject*) message.messageObject; + self.imageObject = imageObject; NSData *imageData = [[NSData alloc] initWithContentsOfFile:imageObject.thumbPath]; image = [UIImage imageWithData:imageData scale:[UIScreen mainScreen].scale]; @@ -76,9 +78,32 @@ } } +#pragma mark - SDPhotoBrowserDelegate +- (NSURL *)photoBrowser:(SDPhotoBrowser *)browser highQualityImageURLForIndex:(NSInteger)index { + return [NSURL URLWithString:self.imageObject.url]; +} + +- (UIImage *)photoBrowser:(SDPhotoBrowser *)browser placeholderImageForIndex:(NSInteger)index { + return [UIImageConstant defalutBannerPlaceholder]; +} + +- (void)didTapImage { + SDPhotoBrowser *browser = [[SDPhotoBrowser alloc]init]; + browser.sourceImagesContainerView = self; + browser.delegate = self; + browser.imageCount = 1; + browser.currentImageIndex = 0; + browser.isMe = NO; + [browser show]; +} + + - (NetImageView *)messageImage { if (!_messageImage) { _messageImage = [[NetImageView alloc] init]; + _messageImage.userInteractionEnabled = YES; + UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapImage)]; + [_messageImage addGestureRecognizer:tap]; } return _messageImage; } diff --git a/xplan-ios/Main/Message/View/Session/SessionViewController.m b/xplan-ios/Main/Message/View/Session/SessionViewController.m index 11606096..dda23437 100644 --- a/xplan-ios/Main/Message/View/Session/SessionViewController.m +++ b/xplan-ios/Main/Message/View/Session/SessionViewController.m @@ -8,11 +8,13 @@ #import "SessionViewController.h" #import #import +#import ///Tool #import "XCCurrentVCStackManager.h" #import "NIMMessageMaker.h" #import "XPMacro.h" #import "UITableView+NIMScrollToBottom.h" +#import "ThemeColor.h" ///Model #import "RoomInfoModel.h" #import "UserInfoModel.h" @@ -30,7 +32,7 @@ #import "MessageProtocol.h" -@interface SessionViewController () +@interface SessionViewController () @property (nonatomic, strong) NIMSession * session; @property (nonatomic, strong) NSMutableArray * messages; @@ -284,6 +286,16 @@ - (void)didSelectMenuItem:(MessageMenuModel *)info { 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; case MessageMenuType_Gift: break; @@ -292,6 +304,26 @@ } } + +#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) { + // 构造出具体会话 + NIMSession *session = [NIMSession session:self.session.sessionId type:NIMSessionTypeP2P]; + // 获得图片附件对象 + NIMImageObject *object = [[NIMImageObject alloc] initWithImage:obj]; + // 构造出具体消息并注入附件 + NIMMessage *message = [[NIMMessage alloc] init]; + message.messageObject = object; + // 错误反馈对象 + NSError *error = nil; + // 发送消息 + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:&error]; + } + }]; +} + #pragma mark - Getters And Setters - (NSArray *)messages { if (!_messages) {