谈谈预览文档和其它多种格式文件的实现方法
来源:互联网 发布:政府大数据解决方案 编辑:程序博客网 时间:2024/06/05 06:09
终于可以将我这几天的努力写在亲爱的博客上了。将前后研究的一起总结一下,现在可以使用三种方式进行预览控制,第一种与第二种都是使用QLPreviewController,第二种是用UIDocumentInteractionControllerDelegate,都属于QuickLook框架。具体详细说吧:
利用QLPreviewControllerDataSource进行文件预览。
第一个实用程序---多格式阅读器制作》,
实现的方法是将数据源设为self: QLPreviewController *previewer = [[QLPreviewController alloc] init];
[previewer setDataSource:self];
[previewer setCurrentPreviewItemIndex:indexPath.row];
[[self navigationController] pushViewController:previewer animated:YES];
{return [self.documentFilenames count];}
{ 。。。。
[self.previewer setTitle:@"tt"];
self.previewer.navigationItem.title=@"tt";
#import <QuickLook/QuickLook.h>
@interface BZPreviewDataSource : NSObject<QLPreviewControllerDataSource>
@property (nonatomic, retain) NSString *path;
@end
@implementation BZPreviewDataSource
@synthesize path = _path;
- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{ return 1;}
- (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{ return [NSURL fileURLWithPath:_path];}
@end
self.previewoCntroller = [[QLPreviewController alloc] init];
BZPreviewDataSource *dataSource = [[BZPreviewDataSource alloc]init];
dataSource.path = [[NSString alloc] initWithString:KnowledgeFullPath];
self.previewoCntroller.dataSource = dataSource;
[self.previewoCntroller setDelegate:self];
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
if (version >= 5.0){
//此函数是5.0之后的函数。
[self presentViewController:self.previewoCntroller animated:YES completion:nil];}
}
UIDocumentInteractionControllerDelegate。
代码非常简单,而且可控,唯一缺点是,利用缺省参数一次只能预览一个。
UIDocumentInteractionController在iOS 3.2中就已经存在了,使用起来非常灵活,功能也比较强大。它除了支持同设备上app之间的文档分享外,还可以实现文档的预览、打印、发邮件以及复制。
UIDocumentInteractionController的使用非常简单。首先通过调用它唯一的类方法interactionControllerWithURL:,并传入一个URL(NSURL),来初始化一个实例对象。之后设置一下这个view controller的delegate属性,并实现一些恰当的delegate方法。
注意,UIDocumentInteractionController并不是UIViewController的子类,所以必须通知document interaction controller使用哪个view controller来预览文档。
// Configure Document Interaction Controller
[self.documentInteractionController setDelegate:self];
self.documentInteractionController.name=@"test";//这里就可以自定义控制栏上的标题了
// Preview PDF
[self.documentInteractionController presentPreviewAnimated:YES];
{return [self.documentFilenames count];}
使用 Quick Look 框架
Quick Look 框架提供了增强的预览功能。该框架主要提供了 QLPreviewController
类。该类依赖于委托对象响应预览动作,以及一个用于提供预览文件的数据源。
从 iOS 4.2 开始,QuickLook preview controller 提供了包含了一个 action 按钮(即打印按钮)的预览视图。对于 controller 能预览的文件,action按钮能够打印该文档。从而不需要你编写任何打印代码。
通过以下方式显示一个Quick Look preview controller:
· 通过导航控制器,将预览窗口以“push 方式”显示。
· 通过 UIViewController 的 presentModalViewController:animated:方法以模态窗口的方式显示。
· 显示一个document interaction controller(如 “预览及打开文件” 中所述)。用户可以从document interaction controller 的选项菜单中选择“Quick Look”,即可打开一个 QuickLook preview controller。
显示 Quick Lookpreview controller 时,请选择适合于你的应用程序的外观和导航方式。如果你的程序未使用导航条,使用一个全屏的模态的 Quick Lookpreview controller 是合适的。如果你的程序使用了“iPhone 式”的导航,则采用 push 方式呈现预览窗口是合适的。
预览窗口中会包括一个标题,显示文件 URL 的最后一段路径。如果要重载标题,可以定制PreviewItem 类,并实现QLPreviewItem 协议中的 previewItemTitle方法。
Quick Look previewcontroller 能够预览下列文件:
· iWork 文档
· Microsoft Office 文档(Office ‘97 以后版本)
· Rich Text Format (RTF) 文档
· PDF 文档
· 图片
· 文本文件,其 uniform type identifier (UTI) 在 public.text
文件中定义 (查看UniformType Identifiers 参考)
· Comma-separated value (csv) 文件
使用 QuickLook preview controller,必须指定数据源对象(即实现 QLPreviewControllerDataSource 协议,请查看QLPreviewControllerDataSource协议参考)。数据源为 Quick Look preview controller 提供预览对象(preivew item),及指明它们的数量以便在一个预览导航列表中包含它们。在这个列表中包含多个对象,在模态预览窗口(全屏显示)显示了导航箭头,以便用户在多个预览对象间切换。对于用导航控制器“push方式”显示的QuickLook preview controller,你可以在导航条上提供按钮以便在预览对象列表见切换。
- 谈谈预览文档和其它多种格式文件的实现方法
- 各种文档格式文件预览的实现
- IE和其它浏览器加载XML文档的方法
- 类似百度文库的文档在线预览实现方法
- WP手机短信导出方法和MSG格式文件阅读器的实现
- WP手机短信导出方法和MSG格式文件阅读器的实现
- JS兼容IE和其它浏览器获取图片大小和预览的实现
- 文档在线预览的实现
- FlexPaper控件实现文档的上传和预览
- 多种编码格式文件的保存
- flexpaper实现文档的在线预览
- Sqrt的多种实现方法
- ListView实现多种item布局的方法和注意事项
- ListView实现多种item布局的方法和注意事项
- php实现office文档转成pdf预览方法
- MFC 基于多文档的打印和打印预览功能的实现
- js多种方式实现图片预览
- 【iOS功能实现】之利用UIDocumentInteractionController打开和预览文档
- Android通过findViewById()获取控件为NULL
- HDU 1556 Color the ball
- ios7 新特性:module研究
- 关于委托的精彩解说
- 《Effective Objective-C 2.0》学习笔记1
- 谈谈预览文档和其它多种格式文件的实现方法
- 同包不同文件,继承接口,编译出错:java错误找不到符号
- 用C#用正则如何提取出标签a中的内容
- OnUpdate()和OnDraw()
- android笔记11 基于vuforia的图像识别Jar的使用
- Ubuntu新建用户
- Mysql常用命令 详细整理版
- singleton(1)
- Instrument检测内存泄露时那些窗口分别代表