WaterMark-part2 网页截图, 优化

873 阅读2分钟
原文链接: lafree317.github.io

前言

这次等的有点久..我实在是太懒了..哈哈…
这篇博客只讲一下思路,
源码可以去Github上去下载源码,地址会在最后贴出来..
这次的改版:

  • 适配iOS8
  • 升级了Swift3.0
  • 编辑水印文字更加流畅
  • 加入了一个网页截图的新功能

一些优化

  • 我把WaterMark上的Textfield也给附上和label相同的富文本格式,编辑文字的时候可以直接看到效果了
  • 新增了边框和边框颜色
  • 新增网页截图功能,目录下的Capture文件夹和Scenes中的Capture是网页截图的代码
  • 适配Swift3.0会在最后贴出一篇我总结的笔记

网页截图

截图用的是SwViewCapture这个库

本来他没有支持Swift3..我适配了一下发了Pr上去居然通过了..哈哈.这个库还是很方便的的,给各种View加了个extension,用block回调一个image,棒棒哒

URL Scheme / Extension:

这个功能第一版是在Share Extension中截图的,但是extension中内存分配太少截图操作会导致extension崩溃,所以调研了一下URL Scheme,把网址传递到应用内来截图
对于URL Scheme感兴趣的同学我推荐两篇系列博客,看完保证能学会…
调研完发现iOS8.X之后就不让ShareExtension唤起App了,就连用隐形的WebView请求都会被系统拦截…
于是我选择了让用户打开应用时更方便截图的解决办法…:
1.在Capture控制器中往Group的缓存中存入一份Url地址
2.通过WM:// 唤起的应用也把地址存到Group的缓存中
3.在从后台进入程序,或homeVC将要出现时检测缓存中是否有需要截图的地址
4.如果有就打开截图界面,弹出网页并把缓存清空
这期间关于Group缓存的操作都是在CaptureModel这个类里完成的,相关代码请到项目中去看我就不贴出来啦

  • Group的证书配置,最好自己手动操作,系统生成的会很乱
  • ShareExtensionBundle Identifier的命名规范com.mycompany.myappname.myextensionname其他命名的都不行…而且报错说的不是这个
  • 新创建的Target只能手动创建Swift-OC-Bridge了

参考文章

适配Swift3.0:lafree317.github.io/2016/09/15/…
ShareExtension:my.oschina.net/vimfung/blo…
URL Scheme注册:www.superqq.com/blog/2015/0…
URL Scheme传值:www.superqq.com/blog/2015/0…

项目源代码(喜欢的可以点几个Star):github.com/Lafree317/W…
之前的文章:
WaterMark-part1项目架构