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

昨天产品经理告诉我,希望能实现仿网易严选那样,可以捕捉到用户的截屏操作,然后进行截屏分享的小功能。
在实现的过程中遇到的最大问题就是截屏为什么没有状态栏???然后各种查找,资料聊聊无几,只有大神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

你可能感兴趣的:(关于代码截屏带状态栏的问题)