Mob*_*its 28 iphone multitasking ipad ios
您可能都知道iOS会在将应用程序投射到后台之前对其进行屏幕截图.这通常是为了获得更好的用户体验,例如快速动画来恢复应用程序等等.我不希望我的应用程序屏幕截图存储在设备上,但我希望多任务仍然存在.
我提出了一个解决方案,但我不确定我是否朝着正确的方向前进.因此,当applicationDidEnterBackground调用时 - 我放入了一个将由操作系统捕获的叠加图像,一旦应用程序进入前景,我将删除叠加层.我不确定这是否会起作用,但我正在实现这一目标.同时,对此的任何其他想法将帮助我找出攻击此问题的最佳方式.
Ole*_*ann 29
你走在正确的轨道上.这是Apple推荐的方法,如iOS应用程序编程指南中所述:
在移动到后台之前从视图中删除敏感信息.当应用程序转换到后台时,系统会拍摄应用程序主窗口的快照,然后在将应用程序转换回前台时会快速显示该窗口.在从
applicationDidEnterBackground:方法返回之前,您应隐藏或隐藏可能作为快照的一部分捕获的密码和其他敏感个人信息.
小智 15
需要在应用程序生命周期方法中编写代码,这里我们将imageView应用程序的动画放到后台:
-(void)applicationWillResignActive:(UIApplication *)application
{
imageView = [[UIImageView alloc]initWithFrame:[self.window frame]];
[imageView setImage:[UIImage imageNamed:@"Splash_Screen.png"]];
[self.window addSubview:imageView];
}
Run Code Online (Sandbox Code Playgroud)
这是删除以下代码imageView:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if(imageView != nil) {
[imageView removeFromSuperview];
imageView = nil;
}
}
Run Code Online (Sandbox Code Playgroud)
它正在运行并经过适当测试.
Lil*_*ily 10
我遇到了同样的问题,我的研究引导我得到以下答案:
在应用进入后台之前设置模糊的屏幕叠加层,一旦应用变为活动状态,请移除此叠加层
如果是iOS 7或更高版本,则可以使用ignoreSnapshotOnNextApplicationLaunch函数
请参阅Apple文档:https: //developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instm/UIApplication/ignoreSnapshotOnNextApplicationLaunch
我希望这有助于某人.
AppDelegate 中的工作方法,swift 4.2:
func blurScreen(style: UIBlurEffect.Style = UIBlurEffect.Style.regular) {
screen = UIScreen.main.snapshotView(afterScreenUpdates: false)
let blurEffect = UIBlurEffect(style: style)
let blurBackground = UIVisualEffectView(effect: blurEffect)
screen?.addSubview(blurBackground)
blurBackground.frame = (screen?.frame)!
window?.addSubview(screen!)
}
func removeBlurScreen() {
screen?.removeFromSuperview()
}
Run Code Online (Sandbox Code Playgroud)
哪里:
weak var screen : UIView? = nil // property of the AppDelegate
Run Code Online (Sandbox Code Playgroud)
在需要的委托方法中调用这些方法:
func applicationWillResignActive(_ application: UIApplication) {
blurScreen()
}
func applicationDidBecomeActive(_ application: UIApplication) {
removeBlurScreen()
}
Run Code Online (Sandbox Code Playgroud)