Commit 41319991 authored by lingli's avatar lingli

增加选中或者取消选中一张照片的代理方法

parent 03ecfc8b
......@@ -269,6 +269,16 @@
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray<UIImage *> *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray<NSDictionary *> *)infos;
- (void)tz_imagePickerControllerDidCancel:(TZImagePickerController *)picker;
/// 如果用户选择了某张照片下面的代理方法会被执行
/// 如果isSelectOriginalPhoto为YES,表明用户选择了原图
/// 你可以通过一个asset获得原图,通过这个方法:[[TZImageManager manager] getOriginalPhotoWithAsset:completion:]
- (void)imagePickerController:(TZImagePickerController *)picker didSelectAsset:(PHAsset *)asset photo:(UIImage *)photo isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto;
/// 如果用户取消选择了某张照片下面的代理方法会被执行
/// 如果isSelectOriginalPhoto为YES,表明用户选择了原图
/// 你可以通过一个asset获得原图,通过这个方法:[[TZImageManager manager] getOriginalPhotoWithAsset:completion:]
- (void)imagePickerController:(TZImagePickerController *)picker didDeselectAsset:(PHAsset *)asset photo:(UIImage *)photo isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto;
// If user picking a video and allowPickingMultipleVideo is NO, this callback will be called.
// If allowPickingMultipleVideo is YES, will call imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto:
// 如果用户选择了一个视频且allowPickingMultipleVideo是NO,下面的代理方法会被执行
......
......@@ -616,6 +616,7 @@ static CGFloat itemMargin = 5;
for (TZAssetModel *model_item in selectedModels) {
if ([model.asset.localIdentifier isEqualToString:model_item.asset.localIdentifier]) {
[tzImagePickerVc removeSelectedModel:model_item];
[strongSelf setAsset:model_item.asset isSelect:NO];
break;
}
}
......@@ -652,6 +653,7 @@ static CGFloat itemMargin = 5;
if (tzImagePickerVc.showSelectedIndex || tzImagePickerVc.showPhotoCannotSelectLayer) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"TZ_PHOTO_PICKER_RELOAD_NOTIFICATION" object:strongSelf.navigationController];
}
[strongSelf setAsset:model.asset isSelect:YES];
[strongSelf refreshBottomToolBarStatus];
[UIView showOscillatoryAnimationWithLayer:strongLayer type:TZOscillatoryAnimationToSmaller];
} else {
......@@ -874,6 +876,34 @@ static CGFloat itemMargin = 5;
}
}
/// 选中/取消选中某张照片
- (void)setAsset:(PHAsset *)asset isSelect:(BOOL)isSelect {
TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController;
if (isSelect && [tzImagePickerVc.pickerDelegate respondsToSelector:@selector(imagePickerController:didSelectAsset:photo:isSelectOriginalPhoto:)]) {
[self callDelegate:asset isSelect:YES];
}
if (!isSelect && [tzImagePickerVc.pickerDelegate respondsToSelector:@selector(imagePickerController:didDeselectAsset:photo:isSelectOriginalPhoto:)]) {
[self callDelegate:asset isSelect:NO];
}
}
/// 调用选中/取消选中某张照片的代理方法
- (void)callDelegate:(PHAsset *)asset isSelect:(BOOL)isSelect {
TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController;
__weak typeof(self) weakSelf = self;
__weak typeof(tzImagePickerVc) weakImagePickerVc= tzImagePickerVc;
[[TZImageManager manager] getPhotoWithAsset:asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) {
if (isDegraded) return;
__strong typeof(weakSelf) strongSelf = weakSelf;
__strong typeof(weakImagePickerVc) strongImagePickerVc = weakImagePickerVc;
if (isSelect) {
[strongImagePickerVc.pickerDelegate imagePickerController:strongImagePickerVc didSelectAsset:asset photo:photo isSelectOriginalPhoto:strongSelf.isSelectOriginalPhoto];
} else {
[strongImagePickerVc.pickerDelegate imagePickerController:strongImagePickerVc didDeselectAsset:asset photo:photo isSelectOriginalPhoto:strongSelf.isSelectOriginalPhoto];
}
}];
}
#pragma mark - UIImagePickerControllerDelegate
- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
......@@ -980,7 +1010,7 @@ static CGFloat itemMargin = 5;
return;
}
dispatch_async(dispatch_get_main_queue(), ^{
[self.model refreshFetchResult];
[self.model refreshFetchResult];
[self fetchAssetModels];
});
}
......
......@@ -318,6 +318,7 @@
return;
}
[_tzImagePickerVc addSelectedModel:model];
[self setAsset:model.asset isSelect:YES];
if (self.photos) {
[_tzImagePickerVc.selectedAssets addObject:_assetsTemp[self.currentIndex]];
[self.photos addObject:_photosTemp[self.currentIndex]];
......@@ -353,6 +354,7 @@
// [_tzImagePickerVc.selectedAssets removeObject:_assetsTemp[self.currentIndex]];
[self.photos removeObject:_photosTemp[self.currentIndex]];
}
[self setAsset:model.asset isSelect:NO];
break;
}
}
......@@ -638,4 +640,32 @@
return [TZCommonTools tz_isRightToLeftLayout] ? self.models.count - _currentIndex - 1 : _currentIndex;
}
/// 选中/取消选中某张照片
- (void)setAsset:(PHAsset *)asset isSelect:(BOOL)isSelect {
TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController;
if (isSelect && [tzImagePickerVc.pickerDelegate respondsToSelector:@selector(imagePickerController:didSelectAsset:photo:isSelectOriginalPhoto:)]) {
[self callDelegate:asset isSelect:YES];
}
if (!isSelect && [tzImagePickerVc.pickerDelegate respondsToSelector:@selector(imagePickerController:didDeselectAsset:photo:isSelectOriginalPhoto:)]) {
[self callDelegate:asset isSelect:NO];
}
}
/// 调用选中/取消选中某张照片的代理方法
- (void)callDelegate:(PHAsset *)asset isSelect:(BOOL)isSelect {
TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController;
__weak typeof(self) weakSelf = self;
__weak typeof(tzImagePickerVc) weakImagePickerVc= tzImagePickerVc;
[[TZImageManager manager] getPhotoWithAsset:asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) {
if (isDegraded) return;
__strong typeof(weakSelf) strongSelf = weakSelf;
__strong typeof(weakImagePickerVc) strongImagePickerVc = weakImagePickerVc;
if (isSelect) {
[strongImagePickerVc.pickerDelegate imagePickerController:strongImagePickerVc didSelectAsset:asset photo:photo isSelectOriginalPhoto:strongSelf.isSelectOriginalPhoto];
} else {
[strongImagePickerVc.pickerDelegate imagePickerController:strongImagePickerVc didDeselectAsset:asset photo:photo isSelectOriginalPhoto:strongSelf.isSelectOriginalPhoto];
}
}];
}
@end
......@@ -563,14 +563,14 @@
_isSelectOriginalPhoto = isSelectOriginalPhoto;
[_collectionView reloadData];
// _collectionView.contentSize = CGSizeMake(0, ((_selectedPhotos.count + 2) / 3 ) * (_margin + _itemWH));
// 1.打印图片名字
[self printAssetsName:assets];
// 2.图片位置信息
for (PHAsset *phAsset in assets) {
NSLog(@"location:%@",phAsset.location);
}
// 3. 获取原图的示例,用队列限制最大并发为1,避免内存暴增
self.operationQueue = [[NSOperationQueue alloc] init];
self.operationQueue.maxConcurrentOperationCount = 1;
......@@ -587,6 +587,32 @@
}
}
/// 如果用户选择了某张照片下面的代理方法会被执行
/// 如果isSelectOriginalPhoto为YES,表明用户选择了原图
/// 你可以通过一个asset获得原图,通过这个方法:[[TZImageManager manager] getOriginalPhotoWithAsset:completion:]
- (void)imagePickerController:(TZImagePickerController *)picker didSelectAsset:(PHAsset *)asset photo:(UIImage *)photo isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto {
// [_selectedAssets addObject:asset];
// [_selectedPhotos addObject:photo];
// [self.collectionView reloadData];
}
/// 如果用户取消选择了某张照片下面的代理方法会被执行
/// 如果isSelectOriginalPhoto为YES,表明用户选择了原图
/// 你可以通过一个asset获得原图,通过这个方法:[[TZImageManager manager] getOriginalPhotoWithAsset:completion:]
- (void)imagePickerController:(TZImagePickerController *)picker didDeselectAsset:(PHAsset *)asset photo:(UIImage *)photo isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto {
// int index = -1;
// for (int i = 0; i < _selectedAssets.count; i++) {
// if ([_selectedAssets[i] isEqual:asset]) {
// index = i;
// }
// }
// if (index > -1) {
// [_selectedAssets removeObjectAtIndex:index];
// [_selectedPhotos removeObjectAtIndex:index];
// [self.collectionView reloadData];
// }
}
// If user picking a video and allowPickingMultipleVideo is NO, this callback will be called.
// If allowPickingMultipleVideo is YES, will call imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto:
// 如果用户选择了一个视频且allowPickingMultipleVideo是NO,下面的代理方法会被执行
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment