iOS9截图不显示TabBar

时间:2016-04-26 08:37:50

标签: ios objective-c uitabbarcontroller

我使用以下代码捕获整个屏幕的屏幕截图,包括状态栏和 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

之外的所有内容

2 个答案:

答案 0 :(得分:0)

尝试以下代码。

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 的屏幕截图。

希望它适合你。

答案 1 :(得分:0)

只有在viewDidAppear上确定每个UI组件后,才能调用屏幕截图捕获代码块。

-(void) viewDidAppear:(BOOL)animated {

[super viewDidAppear:animated];

//Screen capturing code goes here...

}