iOS本地预览和网络预览PDF等文件(三)——UIDocumentInteractionController本地查看及第三方分享

项目知识点

  • Bundle包的制作与使用
  • PDF等文件缓存在沙盒(cache)
  • UIDocumentInteractionController本地查看及第三方分享
  • QLPreviewController本地预览及网络预预览
    Demo地址
    :UIDocumentInteractionController和QLPreviewController都能实现文件的本地查看,笔者在立题的时候对QLPreviewController的网络预览有误解,其实两者本质都是将文件缓存到本地进行查看

区别:

1.UIDocumentInteractionController一次只能浏览一个文件,QLPreviewController可以一起浏览多个文件;2.UIDocumentInteractionController有第三方分享和特定操作,QLPreviewController则没有

UIDocumentInteractionController本地查看文件

1.实例化一个UIDocumentInteractionController对象并遵守其delegate
@interface FileReviewController () 
@property (nonatomic, strong) UIDocumentInteractionController *DIController;
@end
NSURL *urlPath = [[NSBundle mainBundle] URLForResource:@"Jobs" withExtension:@"pdf" subdirectory:@"PDF.bundle"];
self.DIController = [UIDocumentInteractionController interactionControllerWithURL:urlPath];
self.DIController.delegate = self;
2.实现delegate
#pragma mark - UIDocumentInteractionControllerDelegate
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {
    return self;
}

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

- (CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController*)controller {
    return self.view.frame;
}
3.点击按钮读取本地文件
- (void)actionDIView {
    [self.DIController presentPreviewAnimated:YES];
}
iOS本地预览和网络预览PDF等文件(三)——UIDocumentInteractionController本地查看及第三方分享_第1张图片
效果图1

UIDocumentInteractionController第三方分享

- (void)actionDIThird {
    [self.DIController presentOptionsMenuFromRect:self.view.bounds inView:self.view animated:YES];
}

在弹出的菜单栏也可以选择Quick Look进行本地查看

iOS本地预览和网络预览PDF等文件(三)——UIDocumentInteractionController本地查看及第三方分享_第2张图片
效果图2

第一行列表显示“AirDrop”是苹果在iOS 7提供的一种跨设备分享的技术;
第二行列表展示整个iOS系统中,可以操作PDF文档的应用程序列表,还包括了苹果在iOS 8提供的Share Extension图标;
第三行列表展示现实设备可选的操作,如Copy,Print等;
若没有定义全局变量 UIDocumentInteractionController,此时点击微信等App会报错,原因是 UIDocumentInteractionController过早释放
错误日志1

iOS本地预览和网络预览PDF等文件(三)——UIDocumentInteractionController本地查看及第三方分享_第3张图片
错误日志2

iOS本地预览和网络预览PDF等文件(三)——UIDocumentInteractionController本地查看及第三方分享_第4张图片
真机效果图

你可能感兴趣的:(iOS本地预览和网络预览PDF等文件(三)——UIDocumentInteractionController本地查看及第三方分享)