什么时候ios自动截屏?

时间:2016-12-01 22:35:24

标签: ios swift uiapplicationdelegate

我正在尝试更改应用进入后台时由iOS自动捕获的屏幕截图。

然而,我并不完全确定何时拍摄此截图。

例如:

如果您在应用程序中下拉通知栏,则会调用以下方法:

- (void) applicationWillResignActive:(UIApplication *) application {
}

此外,如果您在应用程序中双击主页按钮,则会调用相同的方法。此外,如果显示警报视图,则调用“applicationWillResignActive”。

但在这两种情况下

- (void) applicationDidEnterBackground:(UIApplication *) application {
}

未被调用。

所以我的问题是,即使应用程序没有进入后台,是否在调用applicationWillResignActive后捕获了截图?或者iOS仅在applicationDidEnterBackground后捕获屏幕截图?

4 个答案:

答案 0 :(得分:5)

查看官方文档 - "Preventing Sensitive Information From Appearing In The Task Switcher"

它说applicationDidEnterBackground:应该用于上述目的。

答案 1 :(得分:3)

您可以查看here,总结一下,在从applicationDidEnterBackground返回之前更改视图:

答案 2 :(得分:1)

- (void) applicationWillResignActive:(UIApplication *) application { }

当您下拉通知栏或甚至双击主页按钮时,都会调用

。您必须在此处执行某些操作以防止操作系统捕获您的敏感信息。一种解决方法可能是:

  1. 在应用进入后台之前设置模糊的屏幕叠加层
  2. 应用启用后,请移除此叠加层
  3. 这样的事情:

    -(void)applicationWillResignActive:(UIApplication *)application
    {
        imageView = [[UIImageView alloc]initWithFrame:[self.window frame]];
        [imageView setImage:[UIImage imageNamed:@"blurryImage.png"]];
        [self.window addSubview:imageView];
    }
    

    然后在应用程序进入前台之前删除此叠加层:

    - (void)applicationDidBecomeActive:(UIApplication *)application
    {
        if(imageView != nil) {
            [imageView removeFromSuperview];
            imageView = nil;
        }
    }
    

答案 3 :(得分:0)

当您下拉通知栏或甚至双击主页按钮时,都会调用

。您必须在此处执行某些操作以防止操作系统捕获您的敏感信息。一种解决方法可能是:

在应用进入后台之前设置模糊的屏幕叠加层 应用启用后,请移除此叠加层