iOS系统,App运行在前台时,截屏的方式有很多,但是当被切到后台,或者锁屏时,截屏就会出现问题。
解决方案如下:
后台运行
iOS系统后台运行的方式参考:iOS-Background Execution。
截屏方式
一般情况下,使用以下方式是最好的:
|
|
但是,这种方式在切到后台,或者锁屏时,得到的图片的内容是空白,所以,这种情况下,我们直接利用CLLayer来渲染,生成图片。但是,利用CLLayer渲染生成的图片是跟手机屏幕大小一致的,为了得到我们想要的大小,需要进行拉伸,调用CGContextScaleCTM来完成:
|
|
OpenGL
用上述的方式截屏时,由于OpenGL的特殊性,无法截取到其渲染内容,所以,我们需要进一步进行修改:
创建一个CAEAGLLayer的子类:
CaptureCAEAGLLayer.h文件:
|
|
CaptureCAEAGLLayer.m文件:
|
|
对使用CAEAGLLayer的View进行修改:
|
|