一,简介
QLPreviewController与UIDocumentInteractionController拥有一样的文件展示功能。同样也只是支持展示本地的文件展示和分享。
我们可以先下载到本地再进行展示的方法 实现展示在线文件浏览的功能。
二,导入和支持
//导入头文件
#import <QuickLook/QuickLook.h>
//遵循代理
//<QLPreviewControllerDataSource,QLPreviewControllerDelegate>
三,使用
1,初始化,设置代理以及展示操作
QLPreviewController * qlController = [[QLPreviewController alloc] init];
qlController.delegate = self;
qlController.dataSource = self;
[qlController setCurrentPreviewItemIndex:0];
[self presentViewController:qlController animated:YES completion:nil];
2,实现代理方法
//展示文件个数
-(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{
return 1;
}
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
return [NSURL URLWithString:filePath];//filePath文件的保存路径
}
- (void)previewControllerWillDismiss:(QLPreviewController *)controller {
NSLog(@"previewControllerWillDismiss");
}
- (void)previewControllerDidDismiss:(QLPreviewController *)controller {
NSLog(@"previewControllerDidDismiss");
}
- (BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id <QLPreviewItem>)item{
return YES;
}
- (CGRect)previewController:(QLPreviewController *)controller frameForPreviewItem:(id <QLPreviewItem>)item inSourceView:(UIView * __nullable * __nonnull)view{
return CGRectZero;
}
四,优化
目前展示的文件时的title是根据文件名决定的,需求要求可以自定义。
我就自定义了一个QuickLookController继承QLPreviewController
Demo-SGQuickLook