QLPreviewController 实现查看、分享 本地文件
1、导入 QuickLook.framework
2、在需要用到的 地方 添加 #import <QuickLook/QuickLook.h>
3、调用<QLPreviewControllerDelegate> 和 <QLPreviewControllerDataSource>
4、获取本地 文件路径(我这里获取的是Cache路径)
// NSDocumentDirectory , NSCachesDirectory
NSArray *patchs = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [patchs objectAtIndex:0];
//获取到 根目录 为UserDownLoadFile 的文件夹,“UserDownLoadFile”是我之前添加的文件夹,在写入文件到本地时创建
NSString *fileDirectory = [documentsDirectory stringByAppendingPathComponent:@"/UserDownLoadFile"];
//下面是 遍历 目录下所有的文件内容
NSArray *filesArr = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:fileDirectory error:nil];
5、关键步骤 ,创建QLPreviewController,在使用到的方法里创建
QLPreviewController *my = [[QLPreviewController alloc]init];
my.delegate = self;
my.dataSource = self;
[my setCurrentPreviewItemIndex:0];
[self presentViewController:my animated:YES completion:^{
}];
6、代理回调,在下面第二个方法中 fileName 的文件路径拼接方法 要用stringByAppendingPathComponent!!! 要用stringByAppendingPathComponent!!! 要用stringByAppendingPathComponent!!!(重要的事情说三遍,不可用[NSString stringWithFormat:@""]; ,原因可查看stringByAppendingPathComponent 的使用方法) 。其中 abc 表示上面获取到的目录下所有文件的下标,可以任意创建。
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
return 1;
}
- (id)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
NSString *fileName = [fileDirectory stringByAppendingPathComponent:[filesArr objectAtIndex:abc]];
NSURL *fileRUL = [NSURL fileURLWithPath:fileName];
return fileRUL;
}
7、参考
http://www.jianshu.com/p/12a9fd6fa810
8、补充:这个方法只能在真机状态下 使用