2013-02-09 4 views
3

Я хотел использовать QLPreviewController для отображения ALAssets из Photo Stream QLPreviewController нуждается в NSURL для отображения элементаотображения ALAsset с помощью QLPreviewController

Это прекрасно работает, когда это URL файла, такие как /вар/мобильные/Применения/5374 ...... 9E0/Документы/image33.png

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

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

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

ответ

0

Возможно, это не самый быстрый и эффективный способ, но он решает проблему. Пожалуйста, используйте 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; 
Смежные вопросы