3

QLPreviewControllerを使用してフォトストリームからALAssetsを表示したいQLPreviewControllerには、アイテムを表示するためのNSURLが必要です

これは、/ var / mobile / Applications / 5374 ...... 9E0 / Documents/image33.pngなどのファイルURLの場合にうまく機能します

ALAssetを持っていますが、[[asset defaultRepresentation] url]を使用するとNSURLタイプの
assets-library://asset/asset.JPG?id = 00000000-0000-0000-0000-000000000075&ext=JPGが得られます

しかし、これはQLPreviewControllerを表示しません。ロードを表示し続けるだけですか?

何か案は ?前もって感謝します

4

1 に答える 1

0

おそらく最速で最も効率的な方法ではありませんが、それは問題を解決します。ドキュメントのようにNSTemporaryDirectoryの代わりにNSFilemanagerを使用してください:-)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;
于 2013-09-30T17:53:05.400 に答える