打开一个已经下载好的文件有很多种方法,例如打开一个MP4文件,你可以选择AVPlayer,MPMovieplayerViewController,QuickLook,或者是百度影音等等,方法不止一种,以需求而定.
QuickLook是快速查看,平时使用Mac电脑就会比较熟悉.不依赖完整的应用,而是提供了一种快速打开只读的方式预览文件.
iOS提供了两种QuickLook的方式
1: QuickLook框架
2: UIDocumentInteractionController
这两种方法最后的效果基本都差不多. 要是选一种,个人比较推荐 UIDocumentInteractionController. 因为只需要稍稍改动一下,就可以用完整的应用打开这个文件 .适应面比较广.
先说QuickLook, 虽然功能如框架名, 只提供预览, 但是比起UIDocumentInteractionController, 感觉比较正宗.
先 #import <QuickLook/QuickLook.h> 然后遵守<QLPreviewControllerDelegate,QLPreviewControllerDataSource>协议
这个主要对象有2个 QLPreviewController(显示页面) 和 QLPreviewItem (文件项目)
QLPreviewController * ql = [[QLPreviewController alloc]init]; ql.delegate = self; ql.dataSource = self;
@required 的方法必须实现 , 所以先加上
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller;- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index;
以上两个方法都提到了一个重要的参数 QLPreviewItem . 其实是一个URL .
第一个方法,如果一次只打开一个文件,return 1;
第二个方法,return url;
这样就能预览文件了.
再说UIDocumentInteractionController , 个人觉得这个比较牛, 而且是属于 UIkit 框架,所以不需要手动添加框架. 能实现的功能也比较多.
首先........其实你要是不想做一些特别的操作, 代理都可以不用,但是它是有代理的哦 <UIDocumentInteractionControllerDelegate>,里面也就是添加了一些监听和方法.
定义一个变量 documentInteradctionController
url = [[NSBundle mainBundle] URLForResource:@"123" withExtension:@"png"]; if (url) { _documentInteradctionController = [UIDocumentInteractionController interactionControllerWithURL:url];// _documentInteradctionController.delegate = self; 不用代理方法就可以不设置 [self presentViewController:ql animated:YES completion:nil]; }
这就能预览了, 和QuickLook一样.
到这,这2种预览方法都是在App内进行. 文件是readOnly. 想要用完整的程序打开文件,还得使用 UIDocumentInteractionController,这个类可以检查你的手机里有哪些程序可以打开目标文件,而且不需要任何设置.使用起来也很简单
[_documentInteradctionController presentPreviewAnimated:YES]; // [self presentViewController:ql animated:YES completion:nil]; 这是实现预览的方法
及时上面的代码 [self present.....] 改成[_documentInteradctionController present......]就可以了. 这时页面弹出一个UIActionSheet . 让用户选择打开方法. 非常简便.
原标题:iOS QuickLookUIDocumentInteractionController
关键词:IOS