当用户按下主页按钮时,app会发生什么?

时间:2014-03-15 10:56:13

标签: ios cocoa-touch snapshot

当用户按下主页按钮时,应用程序究竟发生了什么? iOS是否会对当前应用的状态进行快照?

如果我是对的,那么如何"滑入"另一个快照?用户按下主页按钮两次后,我需要它来显示主iOS屏幕。

2 个答案:

答案 0 :(得分:4)

为了实现这一目标,您可以在- (void)applicationDidEnterBackground:(UIApplication *)application的窗口中添加子视图(即带有主屏幕图像的ImageView)。

返回时(- (void)applicationWillEnterForeground:(UIApplication *)application),你必须删除子视图。

但是,Apple建议始终显示应用的最新状态(最佳用户体验)。

AppDelegate实施示例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    /* other code */

    self.overlayView = [[UIImageView alloc] initWithFrame:self.window.bounds];
    self.overlayView.image = [UIImage imageNamed:@"mainscreen_screenshot.png"];

    /* other code */
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [self.window addSubview:self.overlayView];
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [self.overlayView removeFromSuperview];
}

答案 1 :(得分:3)

iOS会在您的应用程序转到后台之前截屏。

我是从Apple's official documentation.

得到的
  

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

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

#敏感个人信息

  • 在应用进入后台之前设置模糊的屏幕叠加层,一旦应用变为活动状态,请移除此叠加层(选中 @ cweinberger' s 回答)。

  • 如果是iOS 7或更高版本,您可以使用ignoreSnapshotOnNextApplicationLaunch功能 此外,可以在Restrictions Payload中探索allowScreenShot标记。

深入了解Then this is the best documentation.