iOS文件:预览 和 分享到微信或钉钉等
2020-11-05 本文已影响0人
双鱼子曰1987
一、概述
Apple对于用户的隐私高度重视,因此对于相册、文件、视频等媒体文件的分享严格控制。只能通过系统的相关framework
提供的接口实现。
二、通过 UIDocumentInteractionController
分享到微信或钉钉等
系统默认的分享页面如下:
![](https://img.haomeiwen.com/i740862/357c176c27abb665.jpg)
代码如下:
// 需要持有 UIDocumentInteractionController 实例
@property(nonatomic,strong) UIDocumentInteractionController *documentController;
// 调用方法
NSURL *url = [NSURL fileURLWithPath:sourceUrl];
self.documentController = [UIDocumentInteractionController interactionControllerWithURL:url];
[self.documentController setDelegate:self];
[self.documentController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
必须持有UIDocumentInteractionController
的实例,否则crash。错误信息 ***has gone away prematurely
。原因在于在ARC环境下,方法走完之后,UIDocumentInteractionController的实例被释放了。
三、PDF文件的预览
3.1、方式一:WKWebview
直接打开
self.webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:wkWebConfig];
self.webView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:self.webView];
// 沙盒资源
NSURL *url = [NSURL fileURLWithPath: sourceUrl];
[self.webView loadFileURL:destURL allowingReadAccessToURL: url];
// http://
NSURL *url = [NSURL URLWithString: sourceUrl];
[self.webView loadRequest:[NSURLRequest requestWithURL: url]];
// 本地html文件
[self.webView loadHTMLString:htmlString baseURL:nil];
3.2、方式二:使用 UIDocumentInteractionController
的预览接口
实现代理UIDocumentInteractionControllerDelegate
方法如下
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {
return self;
}
调用api
[self.documentController presentPreviewAnimated:YES];
3.3、方式三:QuickLook.FrameWork
框架,支持PDF、Excel、World等
主要是使用QLPreviewController
来实现预览功能,实例化QLPreviewController
对象,然后实现相关代理即可。
具体使用方式,详见相关文档。
3.4、方式四:针对PDF,还可以使用CGContexDrawPDFPage
这是更底层的api接口,针对PDF,其性能和支持的预览效果无疑是最好的,不过开发成本也相对高。
感兴趣的同学可以自行参见相关文档。
3.5、使用第三方类库
例如,MuPDF
四、让自己的App称为其他App分享对象(如上面的钉钉、微信等)
其实质 共享文件
的方式,注册称为支持某种文件类型的app,需要在info.plist
里面配置UIFileSharingEnabled
等相关项。
iOS中打开的文件如何用其他应用打开选择自己的App
其他
iOS 文件预览(PDF、Excel、World等)之QuickLook框架
iOS利用UIDocumentInteractionController和Quick Look打开或预览文档
iOS UIDocumentInteractionController的使用
PDF的显示和浏览