萤石云 iOSSDK,移植跨平台相关工程
Davin
2023-06-30 3e4be5ed4d2c0395dd60e392baf86c59762059b1
EZSDK/EZSDK/EZ/TempPassword/Controllers/HDLEZDeviceMsgListViewController.m
@@ -10,7 +10,10 @@
#import "MJRefreshNormalHeader.h"
#import "MJRefreshAutoNormalFooter.h"
#import "HDLEZDevMsgListModel.h"
@interface HDLEZDeviceMsgListViewController ()
#import "MWPhotoBrowser.h"
#import "SDWebImageManager.h"
#import <Photos/Photos.h>
@interface HDLEZDeviceMsgListViewController ()<MWPhotoBrowserDelegate>
@property (nonatomic, strong) HDLEZDeviceMsgListView *msgListV;//消息列表view
@property (nonatomic, strong) MJRefreshNormalHeader *header;//刷新header
@@ -25,6 +28,9 @@
@property (nonatomic, assign) NSInteger pageSize;//分页容量
@property (nonatomic, strong) NSMutableArray <MWPhoto *>*photos;    // 预览图片信息
@property (nonatomic, strong) NSString *currentPreviewPhoto;        // 当前预览的图片
@end
@implementation HDLEZDeviceMsgListViewController
@@ -45,7 +51,10 @@
        make.top.equalTo(self.view).offset(HDLEZ_APP_TOP_BAR_HEIGHT);
        make.left.bottom.right.equalTo(self.view);
    }];
//    _msgListV.choseDelegate=self;
    __weak __typeof(self)weakSelf = self;
    [_msgListV previewPicture:^(NSString * _Nonnull pictureUrl) {
        [weakSelf previewPictureWithUrl:pictureUrl];
    }];
    
    //下拉刷新
    // 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
@@ -106,6 +115,31 @@
                weakSelf.msgListV.msgList=weakSelf.msgList;
                weakSelf.currentPageNo+=1;
            }else{
#warning mock
            if (weakSelf.msgList.count == 0) {
                HDLEZDeviceMsgInfoModel *model = [[HDLEZDeviceMsgInfoModel alloc] init];
                model.title = @"mock title 你好你好我是超长的测试标题,你来看下是否超出长度,你好你好我是超长的测试标题,你来看下是否超出长度";
                model.createTime = @"2023.06.15";
                model.content = @"mock content";
                model.imageUrl = @"https://upload-images.jianshu.io/upload_images/5809200-a99419bb94924e6d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240";
                [weakSelf.msgList addObject:model];
                HDLEZDeviceMsgInfoModel *model1 = [[HDLEZDeviceMsgInfoModel alloc] init];
                model1.title = @"mock title1,你好你好";
                model1.createTime = @"2023.06.15";
                model1.content = @"mock content1";
                model1.imageUrl = @"http://b.hiphotos.baidu.com/image/pic/item/e824b899a9014c08878b2c4c0e7b02087af4f4a3.jpg";
                [weakSelf.msgList addObject:model1];
                HDLEZDeviceMsgInfoModel *model2 = [[HDLEZDeviceMsgInfoModel alloc] init];
                model2.title = @"mock title2";
                model2.createTime = @"2023.06.15";
                model2.content = @"mock content2";
                model2.imageUrl = @"https://fastly.picsum.photos/id/452/1000/3000.jpg?hmac=g6GQYs1wmiPeoKOdwI3ot1y4MInIj_dnPk_jCYbVYfk";
                [weakSelf.msgList addObject:model2];
            }
                weakSelf.msgListV.msgList=weakSelf.msgList;
                [weakSelf.footer endRefreshingWithNoMoreData];
            }
            
@@ -117,5 +151,71 @@
    }];
}
#pragma mark MWPhotoBrowserDelegate
- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser {
    return self.photos.count;
}
- (id <MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index {
    if (index < self.photos.count) {
        return [self.photos objectAtIndex:index];
    }
    return nil;
}
- (void)didClickCurrentPhotoBrowserBlank:(MWPhotoBrowser *)photoBrowser {
    [self.navigationController popToViewController:self animated:NO];
}
- (void)didClickDownLoad:(MWPhotoBrowser *)photoBrowser {
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        if (!self.currentPreviewPhoto || self.currentPreviewPhoto.length == 0) {
            [UIView dd_showMessage:NSLocalizedString(@"device_save_gallery_failure", @"下载失败")];
            return;
        }
        NSURL *url = [NSURL URLWithString:self.currentPreviewPhoto];
        SDWebImageManager *manager = [SDWebImageManager sharedManager];
        UIImage *img;
        if ([manager diskImageExistsForURL:url]) {
            img =  [[manager imageCache] imageFromDiskCacheForKey:url.absoluteString];
        } else {
            //从网络下载图片
            NSData *data = [NSData dataWithContentsOfURL:url];
            img = [UIImage imageWithData:data];
        }
        // 保存图片到相册中
        dispatch_async(dispatch_get_main_queue(), ^{
            UIImageWriteToSavedPhotosAlbum(img,self, @selector(image:didFinishSavingWithError
                                                               :contextInfo:),nil);
        });
    });
}
//保存图片完成之后的回调
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error
  contextInfo:(void *)contextInfo {
    // Was there an error?
    NSString *message = nil;
    if (!error) {
        message = NSLocalizedString(@"device_save_gallery", @"已保存至手机相册");
    }
    else
    {
        message = [error description];
    }
    [UIView dd_showMessage:message];
}
#pragma mark PrivateMethod
- (void)previewPictureWithUrl:(NSString *)picUrl {
    self.currentPreviewPhoto = picUrl;
    self.photos = [NSMutableArray array];
    [self.photos addObject:[MWPhoto photoWithURL:[NSURL URLWithString:picUrl]]];
    MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithDelegate:self];
    [browser showDownloadBtn];
    [self.navigationController pushViewController:browser animated:NO];
}
@end