Used for hide view from system screenshots and video recording.
12.5.1
or higheriOS v12
or higher5.5
init(coder:)
React-Native
Flutter
SwiftUI
import SwiftUI
import SnapshotSafeView
struct ContentView: View {
@State var isNeedHiddenContentFromScreenshots: Bool = false
var body: some View {
Text("Hello, world!")
.padding()
.background(Color.brown)
Text("Hello, world!")
.padding()
.background(Color.blue)
.hiddenFromSystemSnaphotWithDefaultPadding(when: isNeedHiddenContentFromScreenshots)
Text("Hello, world!")
.padding()
.background(Color.orange)
Button("Toggle hide from screenshots condition") {
isNeedHiddenContentFromScreenshots.toggle()
}
Spacer()
Text(isNeedHiddenContentFromScreenshots ? "Will be hidden from snapshots" : "Will be appear in snapshots")
.padding()
.background(isNeedHiddenContentFromScreenshots ? Color.green : Color.red)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
UIKit
Warning: This is experimental API, be careful
let someView = UIView()
someView.translatesAutoresizingMaskIntoConstraints = false
someView.topAnchor.constraint(superView.topAnchor, constant: 12).isActive = true
someView.setupAsHiddenFromScreenshot()
or:
final class ExampleViewController: UIViewController {
var hiddenFromScreenshotButtonController = ScreenshotProtectController(content: UIButton())
override func viewDidLoad() {
super.viewDidLoad()
hiddenFromScreenshotButtonController.content.backgroundColor = .systemRed // UI customization apply to content
hiddenFromScreenshotButtonController.content.layer.cornerRadius = 20
view.addSubview(hiddenFromScreenshotButtonController.container)
hiddenFromScreenshotButtonController.container.translatesAutoresizingMaskIntoConstraints = false
[
hiddenFromScreenshotButtonController.container.topAnchor.constraint(equalTo: view.topAnchor, constant: 65),
hiddenFromScreenshotButtonController.container.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 65),
hiddenFromScreenshotButtonController.container.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -65),
hiddenFromScreenshotButtonController.container.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -65)
].forEach { $0.isActive = true } // Layout control apply to container
hiddenFromScreenshotButtonController.setupContentAsHiddenInScreenshotMode() // apply hidden mode
// content will be removed from system screenshots and screen recording
}
}
link |
Stars: 67 |
Last commit: 21 weeks ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics