iOS利用UIDocumentInteractionController和Quick Look打开或预览文档

在App的开发过程中,我们避免不了要打开软件中的文件,例如:Excel文件,Word文件,图片文件等不同格式的文件或者想要通过第三方的App来打开这些文件,那么我们就要用到UIDocumentInteractionController和Quick Look来解决这些问题了。

  • UIDocumentInteractionController的使用方法
  • UIDocumentInterRactionController使用时的注意事项
  • Quick Look的使用方法

一、UIDocumentInteractionController的使用方法

- 首先创建一个UIDocumentInteractionController对象,并对该对象初始化一个URL作为文件路径

1、首先要遵循UIDocumentInteractionControllerDelegate

2、其次是创建一个UIDocumentInteractionController对象
@property(nonatomic,retain)UIDocumentInteractionController *docController;

3、在方法中进行UIDocumentInteractionController对象的初始化

- (void)open{
NSString *fileName = [self.listDicobjectForKey:@"fileName"];

NSString* path = [NSHomeDirectory()stringByAppendingPathComponent:

_docController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:path]];//为该对象初始化一个加载路径

_docController.delegate =self;//设置代理

//直接显示预览
//    [_docController presentPreviewAnimated:YES];

CGRect navRect =self.navigationController.navigationBar.frame;
    navRect.size =CGSizeMake(1500.0f,40.0f);

//显示包含预览的菜单项
[_docController presentOptionsMenuFromRect:navRectinView:self.viewanimated:YES];

//显示不包含预览菜单项
//[docController presentOpenInMenuFromRect:navRect inView:self.view animated:YES];
}
4、代理方法

- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller
{
    return self;
}

- (UIView *)documentInteractionControllerViewForPreview:(UIDocumentInteractionController *)controller
{
    return self.view;
}

- (CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController *)controller
{
    return  self.view.frame;
}

二、UIDocumentInterRactionController使用时的注意事项

1、UIDocumentInterRactionController定义的时候一定要是retain类型的,因为必须要对该对象进行持有;

2、当选择显示包含预览的菜单项

[_docController presentOptionsMenuFromRect:navRectinView:self.viewanimated:YES];时应该注意一点,该方法会触发该类的内置打印输出,会将日志信息打印出来,从而导致App崩溃严重的可能会导致手机死机,现在还未找到解决方法。类似输出结果如下(此处省略该输出的后面部分内容,因为太多了):

unknown activity items supplied: (
        {
        "public.jpeg" = <ffd8ffe0 00104a46 49460001 01010060 00600000 ffdb0043 00030202 03020203 03030304 03030405 08050504 04050a07 ......

当上述方法确实无法满足你的要求的时候就可以考虑一下用Quick Look了。

三、Quick Look的使用方法

1、首先要添加QuickLook.FrameWork框架,具体怎么添加的我就不解释了。

2、在需要用到的Controller中添加头文件#import

- (void)open{
        QLPreviewController *myQlPreViewController = [[QLPreviewController alloc]init];
        myQlPreViewController.delegate =self;
      myQlPreViewController.dataSource =self;
      [myQlPreViewController setCurrentPreviewItemIndex:0];
      [self presentViewController:myQlPreViewControlleranimated:YEScompletion:nil];

5、代理方法

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
   return 1;
}

- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
   NSString *fileName = [self.listDicobjectForKey:@"fileName"];
    NSString* path = [NSHomeDirectory()stringByAppendingPathComponent:[NSStringstringWithFormat:@"Documents/%@",fileName]];
    return [NSURLfileURLWithPath:path];

}
时间: 2024-10-01 11:00:40

iOS利用UIDocumentInteractionController和Quick Look打开或预览文档的相关文章

如何利用启明星Portal门户系统的Page模块构建文档库

利用启明星门户系统的Page模块构架可以搭建企业内部的文档管理系统. (一)应用背景 企业内部通常都会使用共享网盘的方式来存放不同部门之间的文档,例如管理员在服务器上对人事部门增加人事部文档文件夹. 但是随着文件的增加,管理会越来越不方便,主要体现在 (1)查找不方便.用户可能为了找一个制度文档翻遍所有文件夹. (2)公私不明权限维护不方便,例如在人事部文档内部,部分制度需要公开,部分仅限人事部内部查看,而现行管理方式中所有内容都混在了一起,杂乱无章. 为此,启明星推出了Pages模块的文档管理

DevExpress的PdfViewer添加工具栏实现PDF打开、预览、保存、打印

场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243 参照以上将DevExpress安装并引进到工具箱. 这里使用的是VS2013所以安装的DevExpress是14版本. DevExpress14以及注册机下载 https://download.csdn.net/download/badao_liumang_qizhi/116087

利用Word功能变量设计引导式教学事务文档(一)

利用Word功能变量设计引导式教学事务文档 在Word中有一些可以协助使用者建立自动化文档的特殊功能,除了一般我们常见的宏程序外,利用Word功能变量的功能也可以建立自动化文档,用以下范本(延长授课证明单)为例. 这是个范本是我在office2003刚推出时帮微软所设计的一个范本,这个范本的特色就是利用Word的功能变量,达成自动导引使用用者完成文档,使用者只要点此范本两下让Word以此范本建立新文档,文档会产生对话输入框,导引使用者输入文档关键的内容来完成文档. 流程步骤如下 1.点选'延长授

APP图标设计小技巧:在iOS上快速获得APP图标的真实预览图

严格来说,这并不是一篇关于前端开发的文章,因为涉及到的知识非常浅.这只是一个向设计狮们分享的小经验,只是其中用到了一些前端内容. 最近接了个私活,了解到一个初创公司正在高价悬赏Logo(主要用于APP图标),我便投稿试了试,结果真的被选中了,得到了我认为远超Logo本身价值的奖金(看来跟着拿到投资的初创公司混真的有肉吃啊).闲话不表,设计完Logo之后我灵机一动,用iOS系统做了一个APP图标真实效果预览图,一起发给了甲方. 我们假设刚做好的Logo是下面这样的(这是样例图标,用我开发的UWP应

Photoshop脚本 &gt; 打开一个存在的文档

源自:http://coolketang.com/tutorials/menu2lesson3.php 本节将演示如何使用脚本,打开一个图片.首先创建一个空白的脚本文档,并保存在硬盘上某个位置. 首先创建一个空白的脚本文档,并保存在硬盘上某个位置. 接着输入脚本代码: //定义一个变量[sampleDoc],用来表示硬盘上的一个图片文档. var sampleDoc = File("E:\Horse.jpg"); //定义一个变量[message],用来表示一个字符串. var mes

word每次打开都要选择文档类型

每次打开word07 都出现下面一个框框,说要转换文件. 在Word2013文档中,为了能更好地使用“从任意文件还原文本”功能,用户需要启用“打开时确认文件格式转换”功能,以在打开并恢复文件时出现文件格式转换对话框,从而更灵活地控制文件还原过程.在Word2013中启用“打开时确认文件格式转换”功能的步骤如下所述: 第1步,打开Word2013文档窗口,依次单击“文件”→“选项”按钮,单击“选项”按钮 第2步,打开“Word选项”对话框,切换到“高级”选项卡.在“常规”区域选中“打开时确认文件格

Android打开系统的Document文档图片选择

打开Document UI 过滤图片 private void startAcitivty() { Intent intent = new Intent(); intent.setAction("android.intent.action.GET_CONTENT"); intent.setType("image/*"); startActivityForResult(intent,1001); } @Override protected void onActivit

打开和写入word文档

一. 使用win32读取word内容 # -*- coding: utf-8 -*- from win32com import client as wc def readDocx2(): word = wc.Dispatch('Word.Application') # 使用WORD应用程序 word.Visible = 0 # 不打开界面 my_worddoc = word.Documents.Open(u'新建文本文档.docx') # 打开word文档 paragraphs = my_wor

移动设备如何打开RMS加密的文档

关键字:RMS. AZure RMS.IPhone.Android.Office365.Sharepoint.Exchange 最近总是碰到要求用苹果手机及安卓手机阅读RMS加密文档的需求,经过查找相关文档,得出以下结论: 在目前这个阶段,只有通过国际版的Office365和Azure来实现这个功能是最佳的方案. 如果全部采用国际版Office365 E3及以上版本,本身自带RMS加密,可以实现移动端的加密要求. 对于其他加密需要借助国际版Azure RMS来实现,如Exchange.Share