Files
TIMSDK/iOS/TUIKit/TUIChat/Cell/CellUI/Chat/TUIImageCollectionCell.m
T
2021-12-31 16:28:38 +08:00

81 lines
2.6 KiB
Objective-C

#import "TUIImageCollectionCell.h"
#import "TUIDefine.h"
#import "TUITool.h"
@implementation TUIImageCollectionCell
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if(self){
[self setupViews];
}
return self;
}
- (void)setupViews
{
self.imageView = [[UIImageView alloc] init];
self.imageView.layer.cornerRadius = 5.0;
[self.imageView.layer setMasksToBounds:YES];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.backgroundColor = [UIColor clearColor];
[self addSubview:self.imageView];
self.imageView.mm_fill();
self.imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.downloadBtn = [UIButton buttonWithType:UIButtonTypeCustom];
self.downloadBtn.contentMode = UIViewContentModeScaleToFill;
[self.downloadBtn setImage:[UIImage d_imagePath:TUIChatImagePath(@"download")] forState:UIControlStateNormal];
[self.downloadBtn addTarget:self action:@selector(onDownloadBtnClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.downloadBtn];
self.backgroundColor = [UIColor clearColor];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onSelectMedia)];
[self addGestureRecognizer:tap];
}
- (void)onDownloadBtnClick {
UIImage *image = self.imageView.image;
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
[PHAssetChangeRequest creationRequestForAssetFromImage:image];
} completionHandler:^(BOOL success, NSError * _Nullable error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (success) {
[TUITool makeToast:TUIKitLocalizableString(TUIKitPictureSavedSuccess)];
} else {
[TUITool makeToast:TUIKitLocalizableString(TUIKitPictureSavedFailed)];
}
});
}];
}
- (void)onSelectMedia {
if (self.delegate && [self.delegate respondsToSelector:@selector(onCloseMedia:)]) {
[self.delegate onCloseMedia:self];
}
}
- (void)fillWithData:(TUIImageMessageCellData *)data;
{
[super fillWithData:data];
self.imageView.image = nil;
if(data.largeImage == nil) {
[data downloadImage:TImage_Type_Large];
}
@weakify(self)
[[RACObserve(data, largeImage) takeUntil:self.rac_prepareForReuseSignal] subscribeNext:^(UIImage *largeImage) {
@strongify(self)
if (largeImage) {
self.imageView.image = largeImage;
}
}];
}
- (void)layoutSubviews
{
[super layoutSubviews];
self.downloadBtn.mm_width(31).mm_height(31).mm_right(16).mm_bottom(48);
}
@end