使用系统提供的库QuickLook能实现本地doc、pdf等文件加载,主要是使用QLPreviewController这个类。
自定义一个类VAPreviewController,导入系统库头文件#import <QuickLook/QuickLook.h>
,实现相关数据源方法。
VAPreviewController.h
@interface VAPreviewController : VABaseViewController
- (void)loadPreviewForResource:(nullable NSString *)name ofType:(nullable NSString *)ext;
@end
VAPreviewController.m
#import "VAPreviewController.h"
#import <QuickLook/QuickLook.h>
@interface VAPreviewController ()<QLPreviewControllerDataSource>
@property (nonatomic, strong) QLPreviewController *previewController;
@property (nonatomic, copy) NSURL *fileURL;
@end
@implementation VAPreviewController
- (QLPreviewController *)previewController {
if (!_previewController) {
_previewController = [[QLPreviewController alloc] init];
_previewController.dataSource = self;
}
return _previewController;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
#pragma mark - QLPreviewControllerDataSource
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
return 1;
}
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
return self.fileURL;
}
#pragma mark - public
- (void)loadPreviewForResource:(nullable NSString *)name ofType:(nullable NSString *)ext
{
self.fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:name ofType:ext]];
[self presentViewController:self.previewController animated:YES completion:nil];
}
@end