Commit b2f67e49 authored by 翟书觅's avatar 翟书觅

1.视频和图片多选时,添加获取视频信息逻辑

2.根据onlyReturnAsset属性,添加是否提示iCloud同步失败的判断逻辑
parent 900d470d
......@@ -487,7 +487,7 @@
TargetAttributes = {
900E657B1C2BB8D5003D9A9E = {
CreatedOnToolsVersion = 7.2;
DevelopmentTeam = LTFQDC2QVX;
DevelopmentTeam = LTFQDC2QVX;
ProvisioningStyle = Automatic;
};
900E65941C2BB8D5003D9A9E = {
......@@ -823,7 +823,7 @@
CODE_SIGN_IDENTITY = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = LTFQDC2QVX;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/TZImagePickerController",
......
......@@ -169,14 +169,10 @@
_bigImageRequestID = [[TZImageManager manager] requestImageDataForAsset:_model.asset completion:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
if (!imageData && [info[PHImageResultIsInCloudKey] boolValue]) {
if (self.model.type == TZAssetModelMediaTypeVideo ||
self.model.type == TZAssetCellTypePhotoGif ||
self.model.type == TZAssetModelMediaTypeLivePhoto) {
self.model.iCloudFailed = YES;
if (self.didSelectPhotoBlock) {
self.didSelectPhotoBlock(YES);
self.selectImageView.image = self.photoDefImage;
}
self.model.iCloudFailed = YES;
if (self.didSelectPhotoBlock) {
self.didSelectPhotoBlock(YES);
self.selectImageView.image = self.photoDefImage;
}
}
[self hideProgressView];
......@@ -196,6 +192,17 @@
[self cancelBigImageRequest];
}
}];
if (_model.type == TZAssetCellTypeVideo) {
[[TZImageManager manager] getVideoWithAsset:_model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) {
dispatch_async(dispatch_get_main_queue(), ^{
self->_model.iCloudFailed = YES;
if (self->_didSelectPhotoBlock) {
self->_didSelectPhotoBlock(YES);
self->_selectImageView.image = self.photoDefImage;
}
});
}];
}
}
- (void)cancelBigImageRequest {
......
......@@ -566,15 +566,11 @@ static CGFloat itemMargin = 5;
[[NSNotificationCenter defaultCenter] postNotificationName:@"TZ_PHOTO_PICKER_RELOAD_NOTIFICATION" object:strongSelf.navigationController];
}
[UIView showOscillatoryAnimationWithLayer:strongLayer type:TZOscillatoryAnimationToSmaller];
if (strongCell.model.type == TZAssetModelMediaTypeLivePhoto ||
strongCell.model.type == TZAssetModelMediaTypePhotoGif ||
strongCell.model.type == TZAssetModelMediaTypeVideo) {
if (strongCell.model.iCloudFailed) {
[strongSelf->_models replaceObjectAtIndex:indexPath.item withObject:strongCell.model];
NSString *title = [NSBundle tz_localizedStringForKey:@"iCloud sync failed"];
[tzImagePickerVc showAlertWithTitle:title];
}
}
} else {
// 2. select:check if over the maxImagesCount / 选择照片,检查是否超过了最大个数的限制
if (tzImagePickerVc.selectedModels.count < tzImagePickerVc.maxImagesCount) {
......
......@@ -228,19 +228,15 @@
_asset = asset;
self.imageRequestID = [[TZImageManager manager] getPhotoWithAsset:asset completion:^(UIImage *photo, NSDictionary *info, BOOL isDegraded) {
if (self.model.type == TZAssetModelMediaTypeVideo ||
self.model.type ==TZAssetModelMediaTypePhotoGif ||
self.model.type == TZAssetModelMediaTypeLivePhoto) {
if (!photo && [info[PHImageResultIsInCloudKey] boolValue]) {
self->_icloudErrorLB.hidden = NO;
self->_icloudErrorIcon.hidden = NO;
} else {
self->_icloudErrorLB.hidden = YES;
self->_icloudErrorIcon.hidden = YES;
}
if (self.iCloudSyncFailed) {
self.iCloudSyncFailed(asset, !self->_icloudErrorLB.hidden);
}
if (!photo && [info[PHImageResultIsInCloudKey] boolValue]) {
self->_icloudErrorLB.hidden = NO;
self->_icloudErrorIcon.hidden = NO;
} else {
self->_icloudErrorLB.hidden = YES;
self->_icloudErrorIcon.hidden = YES;
}
if (self.iCloudSyncFailed) {
self.iCloudSyncFailed(asset, !self->_icloudErrorLB.hidden);
}
if (![asset isEqual:self->_asset]) return;
if (photo) {
......@@ -471,6 +467,16 @@
}];
[[TZImageManager manager] getVideoWithAsset:self.model.asset completion:^(AVPlayerItem *playerItem, NSDictionary *info) {
dispatch_async(dispatch_get_main_queue(), ^{
if (!playerItem && [info[PHImageResultIsInCloudKey] boolValue]) {
self->_icloudErrorLB.hidden = NO;
self->_icloudErrorIcon.hidden = NO;
} else {
self->_icloudErrorLB.hidden = YES;
self->_icloudErrorIcon.hidden = YES;
}
if (self.iCloudSyncFailed) {
self.iCloudSyncFailed(self.model.asset, !self->_icloudErrorLB.hidden);
}
[self configPlayerWithItem:playerItem];
});
}];
......
......@@ -462,6 +462,7 @@
TZVideoPreviewCell *currentCell = (TZVideoPreviewCell *)cell;
currentCell.iCloudSyncFailed = ^(id asset, BOOL isSyncFailed) {
model.iCloudFailed = isSyncFailed;
[weakSelf refreshiCloudFailed:model];
[weakSelf.models replaceObjectAtIndex:indexPath.item withObject:model];
};
} else if (_tzImagePickerVc.allowPickingMultipleVideo && model.type == TZAssetModelMediaTypePhotoGif && _tzImagePickerVc.allowPickingGif) {
......@@ -469,6 +470,7 @@
TZGifPreviewCell *currentCell = (TZGifPreviewCell *)cell;
currentCell.previewView.iCloudSyncFailed = ^(id asset, BOOL isSyncFailed) {
model.iCloudFailed = isSyncFailed;
[weakSelf refreshiCloudFailed:model];
[weakSelf.models replaceObjectAtIndex:indexPath.item withObject:model];
};
} else {
......@@ -497,6 +499,7 @@
}];
photoPreviewCell.previewView.iCloudSyncFailed = ^(id asset, BOOL isSyncFailed) {
model.iCloudFailed = isSyncFailed;
[weakSelf refreshiCloudFailed:model];
[weakSelf.models replaceObjectAtIndex:indexPath.item withObject:model];
};
}
......@@ -578,11 +581,7 @@
_doneButton.hidden = YES;
}
// iCLoud同步失败的UI刷新
if (model.type == TZAssetModelMediaTypePhotoGif ||
model.type == TZAssetModelMediaTypeLivePhoto ||
model.type == TZAssetModelMediaTypeVideo) {
[self refreshiCloudFailed:model];
}
[self refreshiCloudFailed:model];
if (_tzImagePickerVc.photoPreviewPageDidRefreshStateBlock) {
_tzImagePickerVc.photoPreviewPageDidRefreshStateBlock(_collectionView, _naviBar, _backButton, _selectButton, _indexLabel, _toolBar, _originalPhotoButton, _originalPhotoLabel, _doneButton, _numberImageView, _numberLabel);
}
......@@ -599,57 +598,22 @@
}
- (void)refreshiCloudFailed:(TZAssetModel *)model{
TZImagePickerController *_tzImagePickerVc = (TZImagePickerController *)self.navigationController;
if (model.iCloudFailed) {
_selectButton.hidden = YES;
_originalPhotoButton.hidden = YES;
_originalPhotoLabel.hidden = YES;
if (_tzImagePickerVc.selectedModels.count <= 0) {
_doneButton.enabled = !model.iCloudFailed;
}else{
_doneButton.enabled = YES;
dispatch_async(dispatch_get_main_queue(), ^{
TZImagePickerController *_tzImagePickerVc = (TZImagePickerController *)self.navigationController;
// onlyReturnAsset为NO时,依赖TZ返回大图,所以需要有iCloud同步失败的提示,并且不能选择,
if (_tzImagePickerVc.onlyReturnAsset) {
return;
}
}else{
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.currentIndex inSection:0];
UICollectionViewCell *cell = [_collectionView cellForItemAtIndexPath:indexPath];
if ([cell isKindOfClass:[TZPhotoPreviewCell class]]) {
TZPhotoPreviewCell *currentCell = (TZPhotoPreviewCell *)cell;
currentCell.previewView.iCloudSyncFailed = ^(id asset, BOOL isSyncFailed) {
if ([asset isEqual:model.asset]) {
if (_tzImagePickerVc.selectedModels.count <= 0) {
self->_doneButton.enabled = !isSyncFailed;
} else {
self->_doneButton.enabled = YES;
}
self->_selectButton.hidden = isSyncFailed;
}
};
} else if([cell isKindOfClass:[TZVideoPreviewCell class]]){
TZVideoPreviewCell *currentCell = (TZVideoPreviewCell *)cell;
currentCell.iCloudSyncFailed = ^(id asset, BOOL isSyncFailed) {
if ([asset isEqual:model.asset]) {
if (_tzImagePickerVc.selectedModels.count <= 0) {
self->_doneButton.enabled = !isSyncFailed;
} else {
self->_doneButton.enabled = YES;
}
self->_selectButton.hidden = isSyncFailed;
}
};
} else if ([cell isKindOfClass:[TZGifPreviewCell class]]){
TZGifPreviewCell *currentCell = (TZGifPreviewCell *)cell;
currentCell.previewView.iCloudSyncFailed = ^(id asset, BOOL isSyncFailed) {
if ([asset isEqual:model.asset]) {
if (_tzImagePickerVc.selectedModels.count <= 0) {
self->_doneButton.enabled = !isSyncFailed;
} else {
self->_doneButton.enabled = YES;
}
self->_selectButton.hidden = isSyncFailed;
}
};
TZAssetModel *currentModel = self.models[self.currentIndex];
if (_tzImagePickerVc.selectedModels.count <= 0) {
self->_doneButton.enabled = !currentModel.iCloudFailed;
} else {
self->_doneButton.enabled = YES;
}
}
self->_selectButton.hidden = currentModel.iCloudFailed;
self->_originalPhotoButton.hidden = currentModel.iCloudFailed;
self->_originalPhotoLabel.hidden = currentModel.iCloudFailed;
});
}
- (void)showPhotoBytes {
......
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