问题是这个 - 我的应用程序允许你密码保护自己。我使用的界面就像保护手机的密码一样。这一直很好,直到多任务出现。
密码保护仍然有效,但有一个问题。 Apple做了一些特别的事情,让它看起来像我们的应用程序在从后台返回时加载速度更快。操作系统在用户离开应用程序之前拍摄了我们的屏幕图片,并显示该应用程序的其余部分仍在加载。
这导致的问题是,有人试图访问我的应用程序会在密码保护启动之前看到屏幕图像。但是,这并不多,但我不认为我的用户会喜欢这个人的想法能够甚至一瞥他们的数据。
如何停止显示快照图像?
答案 0 :(得分:15)
我解决了这个问题。这是解决方案:
- (void)applicationDidEnterBackground:(UIApplication *)application{
if (appHasPasscodeOn){
UIImageView *splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0, 320, 480)];
splashView.image = [UIImage imageNamed:@"Default.png"];
[window addSubview:splashView];
[splashView release];
}
}
Default.png是我的应用程序的屏幕截图,有一个空白屏幕(对我而言,它只是一个空白的列表视图)。上面的代码在应用程序进入后台之前将它放在我的真实视图前面。所以,当你回到应用程序时,就是你所看到的。瞧。
答案 1 :(得分:4)
标记的答案对我来说非常有效,只是当应用程序再次激活时,splashView会保留在屏幕上。我刚刚将它作为属性并将[splashView removeFromSuperview]添加到我的applicationWillEnterForeground中来修复它。如果其他人得到类似的行为。
答案 2 :(得分:1)
以下是Swift 3.0中的上述解决方案:
lazy var splashImageView: UIImageView = {
let splashImageView = UIImageView(frame: UIScreen.main.bounds)
splashImageView.image = UIImage(named: "splash-view")
return splashImageView
}()
func applicationDidEnterBackground(_ application: UIApplication) {
window?.addSubview(splashImageView)
}
func applicationWillEnterForeground(_ application: UIApplication) {
splashImageView.removeFromSuperview()
}