首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QLPreviewController显示ALAsset

使用QLPreviewController显示ALAsset
EN

Stack Overflow用户
提问于 2013-02-10 05:35:41
回答 1查看 568关注 0票数 3

我想使用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只是一直显示正在加载??

有什么想法吗?提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-01 01:53:05

也许不是最快最有效的方法,但它解决了问题。请按照文档中的说明使用NSFilemanager而不是NSTemporaryDirectory :-)确保链接到ImageIO.framework

代码语言:javascript
复制
    #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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14791869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档