iPhone - 抓住主屏幕的内容

时间:2010-08-14 10:46:49

标签: iphone ipad

我在应用上有一个特定功能,可以在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始终是主屏幕。

有没有其他方法可以从另一个类中捕获主屏幕内容?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

也许可以使用keyWindow直接获取正确的窗口?

UIWindow *theScreen = [[UIApplication sharedApplication] keyWindow];

对于国家问题 - 考虑从另一个国家订购一个。 ; - )