objective-c - 如何使用 PHPickerViewControllerDelegate 获取本地库中视频的缩略图和数据
问题描述
我正在尝试使用PHPickerViewControllerDelegate
和实施- (void)picker:(PHPickerViewController *)picker didFinishPicking:(NSArray<PHPickerResult *> *)results
. 我想:
上传我从 PHPickerViewController 中选择的视频;
展示我选择的视频的缩略图。
这是我的代码:
- (void)picker:(PHPickerViewController *)picker didFinishPicking:(NSArray<PHPickerResult *> *)results API_AVAILABLE(ios(14)){
PHPickerResult *result = results[0];
NSItemProvider *itemProvider = result.itemProvider;
SFFUploadAsset *uploadAsset = [SFFUploadAsset new];
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeMovie]) {
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeMovie options:nil completionHandler:^(__kindof id<NSSecureCoding> _Nullable url, NSError * _Null_unspecified error) {
// *The line below does NOT work and return nil; also fetchAssetsWithALAssetURLs will deprecate soon!! What should I do to get the selected video data ???*
PHAsset *asset = [PHAsset fetchAssetsWithALAssetURLs:@[url] options:nil][0];
PHImageManager *photoImageManager = [PHImageManager defaultManager];
PHImageRequestOptions *requestOptions = [PHImageRequestOptions new];
requestOptions.synchronous = YES;
requestOptions.networkAccessAllowed = YES;
[photoImageManager requestImageDataForAsset:asset options:requestOptions resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
uploadAsset.data = imageData;
}];
}];
}
}
我的问题是:如何正确使用 NSItemProvider 传递所选视频的数据?我做错了吗?谢谢你们!!!!!
解决方案
推荐阅读
- java - Java8:使用枚举值创建对象列表
- gradle - 由 Intellij IDEA 启动时如何调整 Gradle Daemon 的内存使用情况
- vue.js - Nuxt 内容 - 命名槽不显示
- reactjs - 每次状态更改时数据表组件都会重新呈现
- python - 如何修复 Python-SharePoint 连接中的“无法获取本地颁发者证书”?
- javascript - 如何将函数传递给 React 中的子组件?
- java - Java排序列表,然后使用Stream api从列表中获取子列表
- reactjs - React 路由器阻止 ReDirect 触发
- python - 使用 Python 从购买文本描述中提取项目和描述。部分演讲无效:(
- reactjs - 使用 UseEffect 映射函数和连续重新渲染