我在应用上有一个特定功能,可以在iPhone 4和iPad上运行。我还没有iPad(因为Apple忘了我的国家),所以我必须在模拟器上测试它。
我有一个方法需要以CGImageRef的形式获取主屏幕的内容。
我有这个方法:
- (CGImageRef)takeScreenshot {
UIWindow *theScreen = [[UIApplication sharedApplication].windows objectAtIndex:0];
UIGraphicsBeginImageContext(theScreen.frame.size);
[[theScreen layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenshot.CGImage;
}
当我为iPhone编译和测试我的应用程序的iPhone版本时,它完美无缺。但是当我在iPad模拟器上编译和测试iPad版本时,它会返回黑屏。
要使它工作,我必须在第二行将“objectAtIndex:0”更改为“objectAtIndex:1”。
这有什么逻辑,或者它只是一个模拟器错误?据我所知,索引0始终是主屏幕。
有没有其他方法可以从另一个类中捕获主屏幕内容?
提前谢谢。答案 0 :(得分:2)
也许可以使用keyWindow
直接获取正确的窗口?
UIWindow *theScreen = [[UIApplication sharedApplication] keyWindow];
对于国家问题 - 考虑从另一个国家订购一个。 ; - )