0

我正在尝试使用操作表从 tabbaritem 捕获屏幕。当我按下 tabbaritem2 时调用操作表。我想从 tabbaritem1 捕获视图控制器的屏幕。并尝试使用此代码。

self.tabBarController.selectedIndex = 0;
UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * imageData = UIImageJPEGRepresentation(image, 1.0);

我可以在屏幕上看到 tabbaritem1 但它总是捕获 tabbaritem2 的屏幕... 这个问题可以解决吗?谢谢

4

1 回答 1

0

看来您正在尝试保存当前视图,而不是 TabBarController 的 ViewController 层次结构中包含的 ViewController。做更多这样的事情(根据你的 ViewController 在你的层次结构中的位置进行更改。

self.tabBarController.selectedIndex = 0;
YourOtherViewController *yourOtherViewController = (YourOtherViewController*)[self.tabBarController objectAtIndex:0]; // This index needs to be changed for your specific controller you wish to screenshot
UIGraphicsBeginImageContext(yourOtherViewController.view.frame.size);
[yourOtherViewController.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * imageData = UIImageJPEGRepresentation(image, 1.0);
于 2012-11-19T16:06:06.473 回答