去掉QLPreviewController导航栏、工具栏、分享按钮

    最近做文档加载,文档格式有PDF、Word、Excel、TXT,考虑到文档较大,在线加载的方式就不考虑了,决定换方案做本地加载,这样一来增加了下载的工作量,下载还要做断点续传、后台下载,奥买噶。但是在用户体验和工作量之间,果断选择了前者,做断点续传、本地加载。

    苹果自带的QuickLook框架就可以实现文档的加载,没必要使用第三方框架reader等。创建一个QLPreviewController,QLPreviewController可以用present、push的方式引出。QLPreviewController有DataSource和Delegate相关方法,如果需要修改页面title,可自定义一个类,并服从QLPreviewItem协议。

#pragma mark QLPreviewControllerDataSource
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
    
    return 1;
}

- (id)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
    
    NSURL *url = [NSURL fileURLWithPath:self.savePath];
    FotileFileItem *item = [[FotileFileItem alloc] init];
    
    item.previewItemURL = url; //url
    item.name = self.navTitle; //title
    return item;
}

#pragma mark - QLPreviewControllerDelegate
- (void)previewControllerWillDismiss:(QLPreviewController *)controller {
  //QLPreviewController消失后的操作
}

    根据相关业务的需要,文档显示不做分享。要去掉引导航栏和工具栏、左下角的share按钮。我的方案是将QLPreviewController添加到当前视图控制器上,考虑到文件下载页面和文件显示页面最好在同一个页面,这样页面返回只需要一步操作。如果present的话,只能先把QLPreviewControlle给rdismiss掉,再pop出当前VC,这样看起来就是两步操作了。

@interface FotileDownloadVC ()< QLPreviewControllerDataSource, QLPreviewControllerDelegate>

@property (nonatomic, strong) QLPreviewController *qlpVC;

@end

- (QLPreviewController *)qlpVC {
    if (!_qlpVC)  {
        if ([QLPreviewController canPreviewItem:[NSURL fileURLWithPath:self.savePath]])  {
            self.qlpVC = [[QLPreviewController alloc] init];
            _qlpVC.delegate = self;
            _qlpVC.dataSource = self;
            _qlpVC.view.frame = CGRectMake(0, StatusBar_H + NavBar_H, SCREEN_WIDTH, SCREEN_HEIGHT - (StatusBar_H + NavBar_H));
        }
    }
    return _qlpVC;
}

- (void)openQLPreviewVC {
    
    /**
     不能使用present的方式
     1、否则会导致左下角分享按钮隐藏不了
     2、如果使用present出qlpVC,关闭当前VC需要两步操作,先dismiss掉qlpVC,再pop出当前VC,显示效果上会变成两步操作
     */
    [self addChildViewController:self.qlpVC];
    [self.view addSubview:self.qlpVC.view];
}

    如果采用present、push的方式,要去掉引导航栏和工具栏、左下角的share按钮,相对困难,暂时没有好的方案,有好的方案可以相互交流。

你可能感兴趣的:(去掉QLPreviewController导航栏、工具栏、分享按钮)