如何在 Swift 4 中使用 Launch Screen 或 Image 阻止机密信息? [复制]

Posted

技术标签:

【中文标题】如何在 Swift 4 中使用 Launch Screen 或 Image 阻止机密信息? [复制]【英文标题】:How to block confidential information with Launch Screen or Image in Swift 4? [duplicate] 【发布时间】:2018-03-27 19:05:08 【问题描述】:

如何通过在应用移至后台时使用启动图像阻止视图来隐藏应用内的机密信息?我正在使用 Swift 和 ios 11 创建应用程序。

以下是其他人在旧版本 Swift 上的 App Delegate 中使用的东西,但我不明白为什么 if 可以在当前版本上工作:

- (void)applicationDidEnterBackground:(UIApplication *)application


    UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.window.bounds];

    imageView.tag = 101;    // Give some decent tagvalue or keep a reference of imageView in self
//    imageView.backgroundColor = [UIColor redColor];
    [imageView setImage:[UIImage imageNamed:@"Default.png"]];   // assuming Default.png is your splash image's name

    [UIApplication.sharedApplication.keyWindow.subviews.lastObject addSubview:imageView];

【问题讨论】:

【参考方案1】:

目前你的代码在 Objective-c 而不是 swift 中,你可以在 swift 中试试这个

func applicationDidEnterBackground(_ application: UIApplication) 

    let im = UIImageView()

    im.tag = 12

    im.frame = (self.window?.frame)!

    im.image = UIImage.init(named: "add.png")

    application.keyWindow?.subviews.last?.addSubview(im)               


func applicationWillEnterForeground(_ application: UIApplication) 

    if let sub = application.keyWindow?.subviews.last
    
        for vv in sub.subviews
        
            if(vv.tag == 12)
            
                vv.removeFromSuperview()
            

        

    


【讨论】:

xcode 是否可以根据 iPhone 型号选择要使用的图像? (较小手机的较小图像...等) @Daniel 使用您可以在 Assests.xcassests 中为图像放置 1x、2x、3x【参考方案2】:

我已经使用以下代码更新了applicationDidEnterBackgroundapplicationWillEnterForeground,并且成功了:

applicationDidEnterBackground:

func applicationDidEnterBackground(_ application: UIApplication) 
    let imageView: UIImageView = UIImageView.init(frame: self.window!.bounds)
    imageView.tag = 101
    imageView.image = UIImage(named: "Default.png")
    UIApplication.shared.keyWindow?.subviews.last?.addSubview(imageView)

applicationWillEnterForeground:

func applicationWillEnterForeground(_ application: UIApplication) 
    if let subviews = UIApplication.shared.keyWindow?.subviews.last?.subviews 
        for view in subviews 
            if view.tag == 101 
                view.removeFromSuperview()
            
        
    

【讨论】:

以上是关于如何在 Swift 4 中使用 Launch Screen 或 Image 阻止机密信息? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

4.2 ROS节点运行管理launch文件

在 Swift 中捕获 NSException

如何在 VSCode 的 launch.json 中使用自定义环境变量

如何在 Gradle 中使用带有混淆 jar 的 Launch4J

Swift UI 测试,如何检查单元格是不是有图像视图

如何在生命周期Scope.launch 中返回布尔值