Отобразить ALAsset, используя QLPreviewController
Я хочу использовать QLPreviewController для отображения ALAssets из Фотопотока QLPreviewController нужен NSURL для отображения элемента
Это прекрасно работает, когда это URL-адрес файла, например /var/mobile/Applications/5374......9E0/Documents/image33.png
У меня есть ALAsset Однако использование [[asset defaultRepresentation] url] дает мне тип NSURL
активы-библиотека://asset/asset.JPG ID =00000000-0000-0000-0000-000000000075& вн =JPG
Но это не отображает QLPreviewController просто показывает загрузку??
Есть идеи? заранее спасибо
1 ответ
Решение
Возможно, не самый быстрый и эффективный способ, но он решает проблему. Пожалуйста, используйте NSFilemanager вместо NSTevenDirectory, как в документации:-) Убедитесь, что ссылка на ImageIO.framework
#import <ImageIO/ImageIO.h>
....
NSURL *outURLToUseWithQLPreviewController = nil;
ALAsset *myAsset = ... // received somehow
ALAssetRepresentation *represent = myAsset.defaultRepresentation;
CGImageRef representFullScreen = represent.fullScreenImage;
NSString *tempDir = NSTemporaryDirectory();
NSString *imagePath = [tempDir stringByAppendingPathComponent:represent.filename];
NSURL *tempURL = [NSURL fileURLWithPath:imagePath];
CGImageDestinationRef destination = CGImageDestinationCreateWithURL((__bridge CFURLRef)(tempURL), (__bridge CFStringRef)(represent.UTI), 1, NULL);
CGImageDestinationAddImage(destination, representFullScreen, nil);
if ( CGImageDestinationFinalize(destination) ) {
outURLToUseWithQLPreviewController = tempURL;
}
return outURLToUseWithQLPreviewController;