我使用这段代码在iOS中截图:
- (UIImage*)screenshot
{
CGSize imageSize = [[UIScreen mainScreen] bounds].size;
if (NULL != UIGraphicsBeginImageContextWithOptions)
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
else
UIGraphicsBeginImageContext(imageSize);
CGContextRef context = UIGraphicsGetCurrentContext();
// Iterate over every window from back to front
for (UIWindow *window in [[UIApplication sharedApplication] windows])
{
if (![window respondsToSelector:@selector(screen)] || [window screen] == [UIScreen mainScreen])
{
CGContextSaveGState(context);
CGContextTranslateCTM(context, [window center].x, [window center].y);
CGContextConcatCTM(context, [window transform]);
CGContextTranslateCTM(context,
-[window bounds].size.width * [[window layer] anchorPoint].x,
-[window bounds].size.height * [[window layer] anchorPoint].y);
[[window layer] renderInContext:context];
CGContextRestoreGState(context);
}
}
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}当我的应用程序处于后台时,代码将运行。
问题是,它总是需要我的应用程序的屏幕截图,相反,我希望它使用当前的屏幕。
有可能吗?多么?
-编辑--
实际上是可能的,(例如,请参阅此appstore应用程序 )。所以剩下的问题是怎么做?
发布于 2013-05-23 18:56:36
不是的。
代码总是使用应用程序的屏幕截图是有原因的:这是您的应用程序。
想象一下后台应用程序能够拍摄当前屏幕的截图对隐私的影响:
我,这个用户,在使用Bob的恶意偷钱器时刚刚按了家庭按钮,然后转过来查看我的电子邮件--这是我的银行的一张账单,碰巧包括我的帐号、ATM卡号和我的PIN (这不是一个很好的银行)。
现在,我刚刚使用的恶意应用程序“现在决定”将是一个很好的时机来看看我在做什么。它获取我当前屏幕的截图,并将其上传到服务器。
第二天,我所有的钱都没了,我起诉苹果。
发布于 2013-05-23 19:31:52
这是不可能的,因为沙箱的应用程序。应用程序不应该获得其他第三方应用程序的状态。
发布于 2013-05-23 19:02:50
如果通过进入后台,你指的是用户最小化应用程序的时间,那么苹果不允许你从应用程序的外部拍摄用户设备的照片是不可能的。
但是我可能误解了你的问题,如果你在从前景到背景转换之前和之后发布了两个屏幕截图,这样我就可以看到你想在哪里拍摄屏幕快照,我可以给你一个更好的回答:D
https://stackoverflow.com/questions/16721651
复制相似问题