@fidel
Вы можете создать кнопку с повторным разрешением на включение камеры в SwiftUI с помощью примерно следующего кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import SwiftUI import AVKit struct CameraView: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> UIImagePickerController { let camera = UIImagePickerController() camera.sourceType = .camera camera.allowsEditing = false camera.delegate = context.coordinator return camera } func updateUIViewController(_ uiViewController: UIImagePickerController, context: Context) { } func makeCoordinator() -> Coordinator { return Coordinator() } class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate { func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { } } } struct CameraButton: View { @State private var showCamera = false var body: some View { Button(action: { self.showCamera = true }) { Text("Open Camera") } .sheet(isPresented: $showCamera) { CameraView() } } } |
Этот код создаст кнопку "Open Camera", которая открывает камеру в модальном окне, когда ее нажимают. Модальное окно будет автоматически закрыто после того, как пользователь сделает фотографию или отменит действие. Если пользователь снова нажмет кнопку "Open Camera", он снова увидит модальное окно, где он сможет снова включить камеру.