Отображение ALAsset с помощью QLPreviewController

Я хочу использовать QLPreviewController для отображения ALAssets из фотопотока QLPreviewController требуется NSURL для отображения элемента

Это прекрасно работает, когда это URL-адрес файла, такой как /var/mobile/Applications/5374......9E0/Documents/image33.png

У меня есть ALAsset. Однако использование [[asset defaultRepresentation] url] дает мне тип NSURL
assets-library://asset/asset.JPG?id=00000000-0000-0000-0000-000000000075&ext=JPG

Но это не отображает QLPreviewController, просто продолжает показывать загрузку ??

Любые идеи ? заранее спасибо


person NewDev    schedule 09.02.2013    source источник


Ответы (1)


Возможно, не самый быстрый и эффективный способ, но проблему решает. Пожалуйста, используйте NSFilemanager вместо NSTemporaryDirectory, как в документации :-) Обязательно сделайте ссылку на 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;
person mahal tertin    schedule 30.09.2013