iOS系统预览文件但不分享的实用技巧 (iOS10, QLPreviewController)
苹果系统的文件预览能力对于很多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)相关推荐
- 微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载
微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载 注:在pc上开始时采用这两种方式是没有效果的,或者打开的是空页面,但上线到公众号是没有问题的!!!!!!!!! ...
- 苹果:付费才能用 iOS 开发者预览版,网友吐槽:找 Bug,还得先交 99 美元?
整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 以后要尝鲜 iOS 开发者预览版,要先付费,才能测试? 苹果的更新说明 近日,苹果最新公布的一项政策引发了不少开发者的争议,其表示,从 i ...
- win10系统预览体验计划错误代码0x800bfa19怎么办
随着Windows11逐渐趋于稳定,不少用户都想要安装体验Windows11系统,但是不少用户在加入Windows预览体验计划的时候,却出出现了0x800bfa19错误代码的提示,win10系统预览体 ...
- 前端预览word文件_[装机必备] QuickLook —— 敲击空格即可快速预览文件
今天给大家推荐的软件是:QuickLook 你只需要选中文件,然后敲击空格,就可以快速预览文件内容 QuickLook 有三个版本:安装版.便携版.UWP 版 作者对这三个版本的描述: *需要注意的 ...
- 预览docx_Windows-快速预览文件-QuickLook
开源.免费的文件快速预览工具, 支持图片.文档.音视频.代码文本.压缩包等多种格式. 获得 Mac OS 空格键快速预览文件相同的体验 效果图 文件夹 音视频 浏览 压缩包,文本 支持的格式: 图片: ...
- office在线预览 word在线预览 .net在线预览 文件在线浏览接口
office在线预览 word在线预览 excel在线预览 文件浏览接口服务 支持移动端浏览,只要能使用浏览器上网都可以使用,不需要安装任何第三方工具. 1.word在线预览 excel在线预览,.n ...
- 微信小程序预览文件,word、xlsx文件打不开?
预览文件的时候发现表格,word打不开,查了官方文档没有解决办法,后来解决了赶紧整理一下. 按照微信开发文档里的写,pdf可以预览成功,但word和xlsx不能预览 官方文档并没有收录这个bug,生成 ...
- php DOS word在线预览,如何在 Zoho Docs 中在线预览文件
文件预览 简介 预览让您可以概要了解您的长文档.视频或图册.通过预览让您可以一览文件中的内容. 关于 Zoho Docs 中的预览的以下信息将帮助您:使用预览工具栏. 编辑 MS Office 文件. ...
- 企业微信—JS-SDK使用(例:预览文件接口)
企业微信-JS-SDK使用 参考官方文档:https://developer.work.weixin.qq.com/document/path/90514 一.引入JS文件 在.html文件中引入: ...
最新文章
- Selenium之Android使用学习
- PMCAFF | 别学东学西了,先建立自己的知识体系吧
- mysql 体系结构不匹配_指定的DSN包含驱动程序和应用程序之间的体系结构不匹配...
- 学习OpenStack之 (4): Linux 磁盘、分区、挂载、逻辑卷管理 (Logical Volume Manager)
- android 调用系统下载apk,如何在自己的App中调用Android系统自带的安装/卸载程序...
- 并查集——营救(洛谷 P1396)
- python地图匹配_python通过BF算法实现关键词匹配的方法
- Flink-环境搭建
- 从单个静止图像进行 3d 深度重建(论文2007)
- 关于vs编译器的一些认识
- 笨方法学习python--46--python项目骨架
- 软件质量管理-复习总结
- MiniUtilityFramework 九 CText和TEXT
- 使用计算机自带的wifi,电脑的自带无线网卡你知道怎么用吗?赶紧学习一下
- 辽宁粮食产量438亿斤 农业供给侧结构性改革不断优化
- 百度搜索引擎算法大全
- 我用FreeMind 思维导图工具
- 端午趣味征文赛已上线,就等你创作啦
- 影响因子,计算机科学,影响因子最高计算机科学期刊(前50种).doc
- Python3.6实现图片转文字
热门文章
- 数据库扩容 mysql_mysql数据库怎么扩容
- graphpad prism显著性差异分析_【市场表现】2020年第三季度企业债利差分析
- class根据状态 vue_搞懂并学会运用 Vue 中的无状态组件
- matlab求雷克子波相位谱,求雷克子波的振幅谱和相位谱的MATLAB程序,谢谢 !!!!!...
- mysql 113_Centos 下 can't connect mysql server 113
- java中介者模式例子_Java中介者模式(Mediator Pattern)
- html5 调用高德地图,高德地图在h5项目中的集成(点标记)
- 查最大序号 oracle,oracle查询序号最大的表空间的已经使用空间大小的sql语句
- python打包exe黑框一闪而过,解决pyinstaller打包exe文件出现命令窗口一闪而过的问题...
- python比较文件的修改时间,如何比较python中两个文件的修改日期?