iOS应用程序进入后台时(之前)拍摄的屏幕截图?

时间:2013-08-08 07:25:13

标签: ios iphone objective-c cocoa-touch

我希望大家都知道,iOS会在您的应用程序转到后台之前截屏。

我是从official document.

得到的
  

在移至后台之前从视图中删除敏感信息:当应用转换为后台时,系统会拍摄应用主窗口的快照,然后在将应用转换回来时会快速显示到前台。在从applicationDidEnterBackground:方法返回之前,您应隐藏或隐藏可能作为快照的一部分捕获的密码和其他敏感个人信息。

所以,在这里我们可以隐藏我们的“敏感的个人信息”,系统会拍摄应用程序主窗口的快照,因此我们无法更改其功能。

但我想知道..

1)如果在我的应用程序中我在第4个视图,我的应用程序转到后台,那么系统会截取哪个视图/页面的屏幕截图?第一个(应用程序的启动视图?)或应用程序的第4个视图/页面? (这对我来说有点困惑)。

2)我们可以在系统截屏时发出任何动作,或者有任何通知可以告诉我们系统截屏吗?

3)我只是想知道,在我的应用程序启动之前是否可以拍摄(编程)?如果,请告诉我如何操作。如果那么我/哪里可以截取(我的意思是最低阶段的应用程序,我们将能够截取屏幕截图?)

4 个答案:

答案 0 :(得分:7)

  1. 屏幕将显示最顶层的视图,实际上它正在显示正在显示您应用的窗口的屏幕截图。
  2. 没有通知屏幕截图正在进行或被拍摄。您应该只在applicationDidEnterBackground;方法中处理它。只是在文档中说明
  3. 这不可能,您希望在应用运行之前执行任何代码?操作系统将进行屏幕截图,确保隐藏在applicationDidEnterBackground;中的所有内容。最低状态是您的应用已启动并正在运行。
  4. 我的应用是我的应用程序,只要我的应用程序被推到后台,我的UIWindow上会有一个额外的视图。因此,当进行屏幕截图时,将捕获此视图。

答案 1 :(得分:2)

1)只有一个屏幕。屏幕截图是截图。在您的模型案例中应该是第4个视图控制器的视图。但是,第4个控制器的视图很可能不会覆盖所有屏幕或具有透明元素。在这种情况下,第3或第2视图控制器视图的部分视图是屏幕的一部分。

这是截图不是视图控制器拍摄或任何东西。

2)您理解文档是正确的。从applicationDidEnterBackground返回后会截取屏幕截图。没有进一步的dokumentation。

3)不,在调用应用程序之前,您无法执行任何代码。但是,我觉得你正在寻找一些不同于你字面意思的东西。 由于其他原因,我通过实现main函数在模拟器中执行了一个小程序,即使不调用UIApplicatoinMain也是如此。这是您的应用程序中的代码可以执行的第一个时间点,尽管这不会完全“超出本书”。如果我没记错的话,那个时候屏幕是空白/黑色的。因此,如果您要求创建其他应用程序的屏幕截图,这不是前进的方法。

答案 2 :(得分:0)

屏幕截图不像用户按下按钮。

此功能与state restoration相关。当应用程序进入后台时,它会将每个屏幕的视图层次结构展平为用于任务管理器的屏幕截图。如果您选择进入状态恢复,它还将保持用户界面的状态。这意味着一个人可以从背景状态恢复应用程序并可能以这种方式查看敏感信息,这可能是您需要处理的事情。

阻止信息包含在状态屏幕截图中的内容已在Tech QA 1838中介绍。

答案 3 :(得分:-1)

1)我很确定系统会拍摄当前可见视图的快照,所以堆栈中的最后一个,而不是第一个

2)此外,可能会有一个通知让我们知道系统会截取屏幕截图(否则我们怎么能隐藏合理的信息?:)),但我担心我们目前正在使用NDA我猜?

3)你的意思是“在我的应用程序启动之前截屏”?您的代码在应用程序启动时开始执行,所以这个问题几乎没有意义: - / 但是,您可以在应用程序的任何位置拍摄屏幕快照,并且有许多用于该

的stackoverflow帖子