iOS9截图没有显示的TabBar

问题描述:

我用下面的代码来捕捉整个屏幕的截图,包括状态栏和的TabBariOS9截图没有显示的TabBar

UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);  
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:NO]; 

UIImage *imageNew = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

UIImageWriteToSavedPhotosAlbum(imageNew, nil, nil, nil); 

它吸引了一切,除了状态栏和的TabBar

+0

我不知道什么“自我”就在这里,但我非常怀疑它包含状态栏或标签栏。它可能只是一个视图控制器,因此self.view是视图本身。 – Eiko

+0

'self.view'是指主视图,不是吗? – Maysam

+1

它指的是“自我”的观点,无论如何。只有你知道。但它最有可能不是整个屏幕。 – Eiko

尝试下面的代码。

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

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

UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil); 

我测试我的应用程序,它需要的的TabBar截图。

希望它适合你。

+0

不,我有几个动态创建的图层,如果我起诉这种方法,将不会显示。 – Maysam

只有在每个UI组件被安置在viewDidAppear之后,才能调用屏幕截图捕获代码块。

-(void) viewDidAppear:(BOOL)animated { 

[super viewDidAppear:animated]; 

//Screen capturing code goes here... 

} 
+0

但我不想捕获'viewDidAppear()'! – Maysam

+0

好的,那么我们必须找到每个UI元素在控制器中可见的地方。 – byJeevan