关于代码截屏带状态栏的问题

昨天产品经理告诉我,希望能实现仿网易严选那样,可以捕捉到用户的截屏操作,然后进行截屏分享的小功能。
在实现的过程中遇到的最大问题就是截屏为什么没有状态栏???然后各种查找,资料聊聊无几,只有大神OpenFibers的OTScreenShotHelper里可以找到关于状态栏截屏处理的方式。原谅我这个小白没有看懂为什么大神可以通过runtime交换方法就获得了状态栏视图。
附:https://github.com/OpenFibers/OTScreenshotHelper

OTScreenshotHelper中存在的问题是在截屏webView时,无法截屏到网页内容。需要修改的地方是:

+ (UIImage *)screenshotWithStatusBar:(BOOL)withStatusBar rect:(CGRect)rect orientation:(UIInterfaceOrientation)o{}

方法中在将window的层级视图渲染到context时的方法略作修改:

[[window layer] renderInContext:context];

替换为

 [window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES];

但是获得了很好的思路,想要截屏带状态栏,那么我们找到状态栏的视图,将其渲染到context中不就可以了么。
关键在于如何获取状态栏视图,最终在这里找到了答案:
http://blog.csdn.net/qxuewei/article/details/53763653

代码

UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

对于iPhone来说,横屏的时候是没有状态栏的,所以。。。

gitHub地址:https://github.com/HannahZheng/HHTakeScreenshot.git

监听截屏事件的通知:UIApplicationUserDidTakeScreenshotNotification

参考:
IOS截图分享,状态栏挡住了UIView处理
我只是想要截个屏:http://blog.startry.com/2016/02/23/Screenshots-With-SwViewCapture/
iOS 多种截屏功能代码[UIKit and opengles]:http://www.chongchonggou.com/g_869665266.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容