use*_*977 9 uiimagepickercontroller alassetslibrary ios8 photosframework phasset
我使用的UIImagePickerController是让用户选择要在应用中分享的照片或视频.当用户在其库中选择媒体项时,我在其中一个UIImagePickerController's委托方法中执行此代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
PHAsset *asset;
if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.movie"]) {
// Video
asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject];
} else if ([info[@"UIImagePickerControllerMediaType"] isEqualToString:@"public.image"]) {
// Photo
PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil];
asset = [[PHAsset fetchAssetsWithALAssetURLs:@[info[@"UIImagePickerControllerReferenceURL"]] options:nil] lastObject];
}
}
Run Code Online (Sandbox Code Playgroud)
两者都if statements适用于照片和视频,除非您从标题相册中选择一个项目"My Photo Stream".
从中选择项目时"My Photo Stream",PHAsset始终返回nil.
我发现以下问题似乎有一个可行的解决方案的答案:ALAssetsLibrary assetForURL:在iOS 8.1中"我的照片流"中的照片总是返回nil
但上面的链接使用了AssetsLibraryApple不再推荐的框架:
"在iOS 8.0及更高版本中,使用Photos框架而不是Assets Library框架.Photos框架为使用用户的照片库提供了更多功能和更好的性能.请参阅照片框架参考."
我需要能够返回相册中PHAsset媒体项目的对象"My Photo Stream".现在这年代由返回的引用URL UIImagePickerController的info字典是在控制台登录一个有效的URL,但使用此网址时,一个有效的PHAsset永远不会返回的对象.
以下是didFinishPickingMediaWithInfo:委托方法的信息字典中返回的引用URL的示例:
assets-library://asset/asset.JPG?id=DCF5C6E5-B4F4-4E61-9C4B-CC63E104BF2B&ext=JPG
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8541 次 |
| 最近记录: |