Unverified Commit 974205d0 authored by 谭真's avatar 谭真 Committed by GitHub

Merge pull request #1483 from LingliZ/lz

增加选中或者取消选中一张照片的代理方法
parents 03ecfc8b 41319991
...@@ -269,6 +269,16 @@ ...@@ -269,6 +269,16 @@
- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray<UIImage *> *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray<NSDictionary *> *)infos; - (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray<UIImage *> *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray<NSDictionary *> *)infos;
- (void)tz_imagePickerControllerDidCancel:(TZImagePickerController *)picker; - (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 user picking a video and allowPickingMultipleVideo is NO, this callback will be called.
// If allowPickingMultipleVideo is YES, will call imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto: // If allowPickingMultipleVideo is YES, will call imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto:
// 如果用户选择了一个视频且allowPickingMultipleVideo是NO,下面的代理方法会被执行 // 如果用户选择了一个视频且allowPickingMultipleVideo是NO,下面的代理方法会被执行
......
...@@ -616,6 +616,7 @@ static CGFloat itemMargin = 5; ...@@ -616,6 +616,7 @@ static CGFloat itemMargin = 5;
for (TZAssetModel *model_item in selectedModels) { for (TZAssetModel *model_item in selectedModels) {
if ([model.asset.localIdentifier isEqualToString:model_item.asset.localIdentifier]) { if ([model.asset.localIdentifier isEqualToString:model_item.asset.localIdentifier]) {
[tzImagePickerVc removeSelectedModel:model_item]; [tzImagePickerVc removeSelectedModel:model_item];
[strongSelf setAsset:model_item.asset isSelect:NO];
break; break;
} }
} }
...@@ -652,6 +653,7 @@ static CGFloat itemMargin = 5; ...@@ -652,6 +653,7 @@ static CGFloat itemMargin = 5;
if (tzImagePickerVc.showSelectedIndex || tzImagePickerVc.showPhotoCannotSelectLayer) { if (tzImagePickerVc.showSelectedIndex || tzImagePickerVc.showPhotoCannotSelectLayer) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"TZ_PHOTO_PICKER_RELOAD_NOTIFICATION" object:strongSelf.navigationController]; [[NSNotificationCenter defaultCenter] postNotificationName:@"TZ_PHOTO_PICKER_RELOAD_NOTIFICATION" object:strongSelf.navigationController];
} }
[strongSelf setAsset:model.asset isSelect:YES];
[strongSelf refreshBottomToolBarStatus]; [strongSelf refreshBottomToolBarStatus];
[UIView showOscillatoryAnimationWithLayer:strongLayer type:TZOscillatoryAnimationToSmaller]; [UIView showOscillatoryAnimationWithLayer:strongLayer type:TZOscillatoryAnimationToSmaller];
} else { } else {
...@@ -874,6 +876,34 @@ static CGFloat itemMargin = 5; ...@@ -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 #pragma mark - UIImagePickerControllerDelegate
- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { - (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
......
...@@ -318,6 +318,7 @@ ...@@ -318,6 +318,7 @@
return; return;
} }
[_tzImagePickerVc addSelectedModel:model]; [_tzImagePickerVc addSelectedModel:model];
[self setAsset:model.asset isSelect:YES];
if (self.photos) { if (self.photos) {
[_tzImagePickerVc.selectedAssets addObject:_assetsTemp[self.currentIndex]]; [_tzImagePickerVc.selectedAssets addObject:_assetsTemp[self.currentIndex]];
[self.photos addObject:_photosTemp[self.currentIndex]]; [self.photos addObject:_photosTemp[self.currentIndex]];
...@@ -353,6 +354,7 @@ ...@@ -353,6 +354,7 @@
// [_tzImagePickerVc.selectedAssets removeObject:_assetsTemp[self.currentIndex]]; // [_tzImagePickerVc.selectedAssets removeObject:_assetsTemp[self.currentIndex]];
[self.photos removeObject:_photosTemp[self.currentIndex]]; [self.photos removeObject:_photosTemp[self.currentIndex]];
} }
[self setAsset:model.asset isSelect:NO];
break; break;
} }
} }
...@@ -638,4 +640,32 @@ ...@@ -638,4 +640,32 @@
return [TZCommonTools tz_isRightToLeftLayout] ? self.models.count - _currentIndex - 1 : _currentIndex; 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 @end
...@@ -587,6 +587,32 @@ ...@@ -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 user picking a video and allowPickingMultipleVideo is NO, this callback will be called.
// If allowPickingMultipleVideo is YES, will call imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto: // If allowPickingMultipleVideo is YES, will call imagePickerController:didFinishPickingPhotos:sourceAssets:isSelectOriginalPhoto:
// 如果用户选择了一个视频且allowPickingMultipleVideo是NO,下面的代理方法会被执行 // 如果用户选择了一个视频且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