您的位置:首页 > 移动开发 > IOS开发

iOS 开发显示文档的两种方法

2015-09-26 11:18 706 查看
在本篇文章中,介绍打开文件的两种方法:

一.利用UIWebView

     使用UIWebView对象显示文档时在iOS中使用最多的解决方案。  

 //打开PDF文档

    [selfopenFile:@"PDF_SEHistory.pdf"type:@"pdf"];

    //打开word文档

    [selfopenFile:@"file.doc"type:@"msword"];

其中第一个参数为文件名,需包含后缀;第二个参数为对应文件类型的MIMEType

-(void)openFile:(NSString *)fileName type:(NSString *)type
{
       NSString *filePath = [[NSBundlemainBundle]
pathForResource:fileNameofType:nil];
       NSData *fileData = [[NSDataalloc]
initWithContentsOfFile:filePath];

        [self.webViewloadData:fileData
MIMEType:[NSStringstringWithFormat:@"application/%@",type]textEncodingName:@"UTF-8"baseURL:nil];
}

常见文件的MIMEType:

    

 MIMEType                         extension

 application/msword                  doc

 application/pdf                     pdf

 application/vnd.ms-powerpoint       ppt

 image/jpeg                          jpg/jpeg/jpe

 image/gif                           gif

 text/plain                          txt

 video/mpeg                          mpeg

 audio/mpeg                          mp3

 

 更多MIMEType,请参考:点击打开链接

二.利用QuickLook框架

     

QuickLook支持许多文档格式的显示,例如Microsoft Word,Excel和PowerPoint。

在打开文件的类中需啊哟导入QuickLook框架的头文件:#import<QuickLook/QuickLook.h>,并使这个类遵从QLPreviewControllerDataSource
和QLPreviewControllerDelegate协议。

#pragma mark - QLPreviewControllerDelegate
-(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{

    return1;//返回需要打开文档的数目,这里我们只打开一个文档,所以返回1
}

#pragma mark - QLPreviewControllerDataSource
-(id<QLPreviewItem>)previewController:(QLPreviewController *)controller
previewItemAtIndex:(NSInteger)index
{

    NSString *path = [[NSBundlemainBundle]
pathForResource:@"PDF_SEHistory"ofType:@"pdf"];

    return [NSURLfileURLWithPath:path];//返回一个通过NSURL构造的QLPreviewItem对象
}

[selfpresentViewController:self.previewContrilleranimated:YEScompletion:nil];

使用QuickLook框架需要注意的是,当QLPreviewItem正在显示的时候,这个框架会在导航控制器会在导航控制中自动创建一个按钮,以允许用户通过Email发送和打印这个文档。

三.两者的区别 

   UIWebView显示文档非常消耗内存,当应用运行内存不足时,可能会导致崩溃。

iOS 技术交流群:488530658
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息