苹果系统的文件预览能力对于很多app来说是必要的,但其提供的UI相关api并不是可以定制的,比如需要定制toolbar, navigationbar的情况,直接使用QLPreviewController或者

UIDocumentInteractionController 并不能达到想要的效果。

根据笔者的试验来看,现在 iOS10 QLPreviewController 和 UIDocumentInteractionController一样,都是直接在下面显示一个分享按钮,上面是标题栏。

如何对其UI进行定制呢?

QLPreviewController 作为一个正儿八经的viewcontroller,可以对其进行子类化操作,改变其行为,代码类似这样:

(void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];
   
    self.navigationController.navigationBar.hidden = YES;
   
    self.navigationController.toolbar.hidden = YES;
  
    // custom view demonstrate
  UIView *topView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 30)];
   topView.backgroundColor = [UIColor redColor];
 
    [self.view addSubview:topView];
}

为何在viewWillLayoutSubviews执行操作呢?

preview过程中可以点击全屏放大缩小,在这个过程中,你会发现此前所做的view操作被恢复了;这里的viewWillLayoutSubviews相当于是一个hook,可以让我们在view改变以后再把他置回来,达到我们想要的效果。

还有另外一种方案,只add  QLPreviewController的 view 作为subview,代码类似这样:

MyPreviewViewController *qlVc = [[MyPreviewViewController alloc] init];
        qlVc.delegate = self;
        qlVc.dataSource = self;

qlVc.view.frame = CGRectMake(0, 100, 300, 300);
    [self.view addSubview:qlVc.view];

对于该frame以外的部分则可以由我们来自由定制。

而UIDocumentInteractionController作为一个nsobject对象,产生的新UI要对其操纵所需要的手法可能更加tricky,这里笔者也没有做更多的实践,如果大家有好的思路也请分享给我,谢谢!

对于以前版本(iOS10以前)的QLPreviewController,分享按钮貌似是在右上角的,对其定制的方案讨论有很多,这里贴出链接供大家参考:

http://blog.csdn.net/jeffasd/article/details/49662483
https://stackoverflow.com/questions/6957091/qlpreviewcontroller-remove-or-add-uibarbuttonitems
http://www.jianshu.com/p/73048dbe6a7d

其思路主要是以下几种:

1. 子类化 ;  2. category, method swizz; 3. 只使用它的view

比我们上面的方案多了一种使用oc runtime的做法;oc中的runtime功能比较强大,有开发者想到这种解决方案也是正常的。

iOS系统预览文件但不分享的实用技巧 (iOS10, QLPreviewController)相关推荐

  1. 微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载

    微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载 注:在pc上开始时采用这两种方式是没有效果的,或者打开的是空页面,但上线到公众号是没有问题的!!!!!!!!! ...

  2. 苹果:付费才能用 iOS 开发者预览版,网友吐槽:找 Bug,还得先交 99 美元?

    整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 以后要尝鲜 iOS 开发者预览版,要先付费,才能测试? 苹果的更新说明 近日,苹果最新公布的一项政策引发了不少开发者的争议,其表示,从 i ...

  3. win10系统预览体验计划错误代码0x800bfa19怎么办

    随着Windows11逐渐趋于稳定,不少用户都想要安装体验Windows11系统,但是不少用户在加入Windows预览体验计划的时候,却出出现了0x800bfa19错误代码的提示,win10系统预览体 ...

  4. 前端预览word文件_[装机必备] QuickLook —— 敲击空格即可快速预览文件

    ​今天给大家推荐的软件是:QuickLook 你只需要选中文件,然后敲击空格,就可以快速预览文件内容 QuickLook 有三个版本:安装版.便携版.UWP 版 作者对这三个版本的描述: *需要注意的 ...

  5. 预览docx_Windows-快速预览文件-QuickLook

    开源.免费的文件快速预览工具, 支持图片.文档.音视频.代码文本.压缩包等多种格式. 获得 Mac OS 空格键快速预览文件相同的体验 效果图 文件夹 音视频 浏览 压缩包,文本 支持的格式: 图片: ...

  6. office在线预览 word在线预览 .net在线预览 文件在线浏览接口

    office在线预览 word在线预览 excel在线预览 文件浏览接口服务 支持移动端浏览,只要能使用浏览器上网都可以使用,不需要安装任何第三方工具. 1.word在线预览 excel在线预览,.n ...

  7. 微信小程序预览文件,word、xlsx文件打不开?

    预览文件的时候发现表格,word打不开,查了官方文档没有解决办法,后来解决了赶紧整理一下. 按照微信开发文档里的写,pdf可以预览成功,但word和xlsx不能预览 官方文档并没有收录这个bug,生成 ...

  8. php DOS word在线预览,如何在 Zoho Docs 中在线预览文件

    文件预览 简介 预览让您可以概要了解您的长文档.视频或图册.通过预览让您可以一览文件中的内容. 关于 Zoho Docs 中的预览的以下信息将帮助您:使用预览工具栏. 编辑 MS Office 文件. ...

  9. 企业微信—JS-SDK使用(例:预览文件接口)

    企业微信-JS-SDK使用 参考官方文档:https://developer.work.weixin.qq.com/document/path/90514 一.引入JS文件 在.html文件中引入: ...

最新文章

  1. Selenium之Android使用学习
  2. PMCAFF | 别学东学西了,先建立自己的知识体系吧
  3. mysql 体系结构不匹配_指定的DSN包含驱动程序和应用程序之间的体系结构不匹配...
  4. 学习OpenStack之 (4): Linux 磁盘、分区、挂载、逻辑卷管理 (Logical Volume Manager)
  5. android 调用系统下载apk,如何在自己的App中调用Android系统自带的安装/卸载程序...
  6. 并查集——营救(洛谷 P1396)
  7. python地图匹配_python通过BF算法实现关键词匹配的方法
  8. Flink-环境搭建
  9. 从单个静止图像进行 3d 深度重建(论文2007)
  10. 关于vs编译器的一些认识
  11. 笨方法学习python--46--python项目骨架
  12. 软件质量管理-复习总结
  13. MiniUtilityFramework 九 CText和TEXT
  14. 使用计算机自带的wifi,电脑的自带无线网卡你知道怎么用吗?赶紧学习一下
  15. 辽宁粮食产量438亿斤 农业供给侧结构性改革不断优化
  16. 百度搜索引擎算法大全
  17. 我用FreeMind 思维导图工具
  18. 端午趣味征文赛已上线,就等你创作啦
  19. 影响因子,计算机科学,影响因子最高计算机科学期刊(前50种).doc
  20. Python3.6实现图片转文字

热门文章

  1. 数据库扩容 mysql_mysql数据库怎么扩容
  2. graphpad prism显著性差异分析_【市场表现】2020年第三季度企业债利差分析
  3. class根据状态 vue_搞懂并学会运用 Vue 中的无状态组件
  4. matlab求雷克子波相位谱,求雷克子波的振幅谱和相位谱的MATLAB程序,谢谢 !!!!!...
  5. mysql 113_Centos 下 can't connect mysql server 113
  6. java中介者模式例子_Java中介者模式(Mediator Pattern)
  7. html5 调用高德地图,高德地图在h5项目中的集成(点标记)
  8. 查最大序号 oracle,oracle查询序号最大的表空间的已经使用空间大小的sql语句
  9. python打包exe黑框一闪而过,解决pyinstaller打包exe文件出现命令窗口一闪而过的问题...
  10. python比较文件的修改时间,如何比较python中两个文件的修改日期?