swift 如何在iOS上检测屏幕截图以阻止内容(类似于WhatsApp View Once照片)

rmbxnbpk  于 2023-06-04  发布在  Swift
关注(0)|答案(1)|浏览(392)

我正在尝试模仿WhatsApp在对View Once照片进行截图时所做的事情,即为敏感的内容添加覆盖(见下图)
从我在documentation中看到的,我们只在截图后得到一个通知。
我想知道他们是如何做到的,以检测当截图是采取添加这个覆盖

最后,如果用户试图记录屏幕,我认为this notification足以添加覆盖,但我不知道如何在他们截图时做到这一点。

ni65a41a

ni65a41a1#

我认为最好的解决方案是使用这个扩展来阻止截图。

extension UIView {
    
    func makeSecure() {
        DispatchQueue.main.async {
            let field = UITextField()
            field.isSecureTextEntry = true
            self.addSubview(field)
            field.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
            field.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
            self.layer.superlayer?.addSublayer(field.layer)
            field.layer.sublayers?.first?.addSublayer(self.layer)
        }
    }
}

使用方法:

let yourView = UIView()
yourView.makeSecure()

它将阻止用户进行屏幕截图或记录特定视图。
如果您需要在用户尝试截图或记录时显示占位符,请检查此存储库。

示例代码:https://github.com/kuttz/SecureYourView
结果:https://github.com/kuttz/DemosAndScreenShots/blob/main/SecureYourView/Demo.gif

相关问题