Unverified Commit 34b76d72 authored by 谭真's avatar 谭真 Committed by GitHub

Merge pull request #1431 from cnjsyyb/master

新增自己决定照片能否被选中
parents 7ab537ee 26e0ab22
......@@ -87,7 +87,7 @@ A:请参考 https://github.com/banchichen/TZImagePickerController/issues/443
A:3.0.1版本已支持,需新接一个库:[TZImagePreviewController](https://github.com/banchichen/TZImagePreviewController),请参考里面的Demo使用。
**Q:设置可选视频的最大/最小时长?照片的最小/最大尺寸?不符合要求的不显示**
A:可以的,参照Demo的isAssetCanSelect方法实现。我会返回asset出来,显示与否你来决定,注意这个是一个同步方法,对于需要根据asset去异步获取的信息如视频的大小、视频是否存在iCloud里来过滤的,无法做到。如果真要这样做,相册打开速度会变慢,你需要改我源码。
A:可以的,参照Demo的isAssetCanBeDisplayed方法实现。我会返回asset出来,显示与否你来决定,注意这个是一个同步方法,对于需要根据asset去异步获取的信息如视频的大小、视频是否存在iCloud里来过滤的,无法做到。如果真要这样做,相册打开速度会变慢,你需要改我源码。
**Q:预览页面出现了导航栏?**
A:https://github.com/banchichen/TZImagePickerController/issues/652
......
......@@ -109,6 +109,9 @@
/// 检查照片大小是否满足最小要求
- (BOOL)isPhotoSelectableWithAsset:(PHAsset *)asset;
/// 检查照片能否被选中
- (BOOL)isAssetCannotBeSelected:(PHAsset *)asset;
/// 修正图片转向
- (UIImage *)fixOrientation:(UIImage *)aImage;
......
......@@ -236,6 +236,10 @@ static dispatch_once_t onceToken;
if ([self.pickerDelegate respondsToSelector:@selector(isAssetCanSelect:)]) {
canSelect = [self.pickerDelegate isAssetCanSelect:asset];
}
if ([self.pickerDelegate respondsToSelector:@selector(isAssetCanBeDisplayed:)]){
canSelect = [self.pickerDelegate isAssetCanBeDisplayed:asset];
}
if (!canSelect) return nil;
TZAssetModel *model;
......@@ -805,6 +809,15 @@ static dispatch_once_t onceToken;
return YES;
}
/// 检查照片能否被选中
- (BOOL)isAssetCannotBeSelected:(PHAsset *)asset {
if ([self.pickerDelegate respondsToSelector:@selector(isAssetCanBeSelected:)]) {
BOOL canSelectAsset = [self.pickerDelegate isAssetCanBeSelected:asset];
return !canSelectAsset;
}
return NO;
}
#pragma mark - Private Method
- (TZAlbumModel *)modelWithResult:(PHFetchResult *)result collection:(PHAssetCollection *)collection isCameraRoll:(BOOL)isCameraRoll needFetchAssets:(BOOL)needFetchAssets options:(PHFetchOptions *)options {
......
......@@ -287,7 +287,12 @@
// Decide asset show or not't
// 决定照片显示与否
- (BOOL)isAssetCanSelect:(PHAsset *)asset;
- (BOOL)isAssetCanSelect:(PHAsset *)asset __attribute__((deprecated("Use -isAssetCanBeDisplayed:.")));
- (BOOL)isAssetCanBeDisplayed:(PHAsset *)asset;
// Decide asset can be selected
// 决定照片能否被选中
- (BOOL)isAssetCanBeSelected:(PHAsset *)asset;
@end
......
......@@ -627,6 +627,9 @@ static CGFloat itemMargin = 5;
} else {
// 2. select:check if over the maxImagesCount / 选择照片,检查是否超过了最大个数的限制
if (tzImagePickerVc.selectedModels.count < tzImagePickerVc.maxImagesCount) {
if ([[TZImageManager manager] isAssetCannotBeSelected:model.asset]) {
return;
}
if (!tzImagePickerVc.allowPreview) {
BOOL shouldDone = tzImagePickerVc.maxImagesCount == 1;
if (!tzImagePickerVc.allowPickingMultipleVideo && (model.type == TZAssetModelMediaTypeVideo || model.type == TZAssetModelMediaTypePhotoGif)) {
......@@ -941,6 +944,9 @@ static CGFloat itemMargin = 5;
if (assetModel.type == TZAssetModelMediaTypeVideo && !tzImagePickerVc.allowPickingMultipleVideo) {
// 不能多选视频的情况下,不选中拍摄的视频
} else {
if ([[TZImageManager manager] isAssetCannotBeSelected:assetModel.asset]) {
return;
}
assetModel.isSelected = YES;
[tzImagePickerVc addSelectedModel:assetModel];
[self refreshBottomToolBarStatus];
......
......@@ -314,6 +314,9 @@
return;
// 2. if not over the maxImagesCount / 如果没有超过最大个数限制
} else {
if ([[TZImageManager manager] isAssetCannotBeSelected:model.asset]) {
return;
}
[_tzImagePickerVc addSelectedModel:model];
if (self.photos) {
[_tzImagePickerVc.selectedAssets addObject:_assetsTemp[self.currentIndex]];
......@@ -389,6 +392,10 @@
// 如果没有选中过照片 点击确定时选中当前预览的照片
if (_tzImagePickerVc.selectedModels.count == 0 && _tzImagePickerVc.minImagesCount <= 0 && _tzImagePickerVc.autoSelectCurrentWhenDone) {
TZAssetModel *model = _models[self.currentIndex];
if ([[TZImageManager manager] isAssetCannotBeSelected:model.asset]) {
return;
}
[self select:_selectButton];
}
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.currentIndex inSection:0];
......@@ -415,6 +422,10 @@
}
- (void)originalPhotoButtonClick {
TZAssetModel *model = _models[self.currentIndex];
if ([[TZImageManager manager] isAssetCannotBeSelected:model.asset]) {
return;
}
_originalPhotoButton.selected = !_originalPhotoButton.isSelected;
_isSelectOriginalPhoto = _originalPhotoButton.isSelected;
_originalPhotoLabel.hidden = !_originalPhotoButton.isSelected;
......
......@@ -183,6 +183,9 @@
}
- (void)doneButtonClick {
if ([[TZImageManager manager] isAssetCannotBeSelected:_model.asset]) {
return;
}
if (self.navigationController) {
TZImagePickerController *imagePickerVc = (TZImagePickerController *)self.navigationController;
if (imagePickerVc.autoDismiss) {
......
......@@ -632,7 +632,36 @@
// Decide asset show or not't
// 决定asset显示与否
- (BOOL)isAssetCanSelect:(PHAsset *)asset {
- (BOOL)isAssetCanBeDisplayed:(PHAsset *)asset {
/*
switch (asset.mediaType) {
case PHAssetMediaTypeVideo: {
// 视频时长
// NSTimeInterval duration = phAsset.duration;
return NO;
} break;
case PHAssetMediaTypeImage: {
// 图片尺寸
if (phAsset.pixelWidth > 3000 || phAsset.pixelHeight > 3000) {
// return NO;
}
return YES;
} break;
case PHAssetMediaTypeAudio:
return NO;
break;
case PHAssetMediaTypeUnknown:
return NO;
break;
default: break;
}
*/
return YES;
}
// Decide asset can be selected
// 决定照片能否被选中
- (BOOL)isAssetCanBeSelected:(PHAsset *)asset {
/*
switch (asset.mediaType) {
case PHAssetMediaTypeVideo: {
......
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