Used for hide view from system screenshots and video recording.
- React-Native
- Flutter(experimental)
- Swift
- Xcode version:
12.5.1or higher - Deployment target
iOS v12or higher - Swift toolchain
5.5
(削除) Dinamicaly enable/disable hiding from system screenshots and videorecordings(disabling not working yet) (削除ここまで)Done- Run from
init(coder:) (削除) position inside content with autolayout(now frame based only) (削除ここまで)Done(削除) Support SwiftUI (削除ここまで)- Improve API
(削除) SupportDoneReact-Native(削除ここまで)- Support
Flutter
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() } }
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 } }