2013-04-26 73 views
6

我有下面的代码问题,只需要我的UITableView,而不能与导航和标签栏整个屏幕的照片...保存全屏截图包括酒吧

我想全屏幕捕获,包括导航和标签栏。任何帮助不胜感激。

- (UIImage*)captureView:(UIView *)view 
{ 
CGRect rect = [[UIScreen mainScreen] bounds]; 
UIGraphicsBeginImageContext(rect.size); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[view.layer renderInContext:context]; 
UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return img; 
} 
+0

其查看你传递捕捉? – Dancreek 2013-04-26 18:51:23

回答

12

following代码为我工作几个月前:

CALayer *layer = [[UIApplication sharedApplication] keyWindow].layer; 
CGFloat scale = [UIScreen mainScreen].scale; 
UIGraphicsBeginImageContextWithOptions(layer.frame.size, NO, scale); 

[layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
+0

这部分工作,但删除状态栏..任何想法,包括状态栏? – Steve 2013-04-26 20:05:38

+0

这是不可能的。只使用私有API,但是您的应用将被拒绝。 – kovpas 2013-04-26 20:37:36

+0

好的,有趣的是,我可以删除状态栏似乎从屏幕截图中省略的顶部的白色条? – Steve 2013-04-26 22:18:57

1

雨燕3.0的版本,如果任何一个需要

func getScreenShot() -> UIImage { 

     let layer : CALayer = (UIApplication.shared.keyWindow?.layer)! 
     let scale : CGFloat = UIScreen.main.scale 
     UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale) 
     layer.render(in: UIGraphicsGetCurrentContext()!) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return image! 
    }