отключить или включить кнопку захвата в UIImagePickerController

#ios #swift #xcode #uiimagepickercontroller

#iOS #swift #xcode #uiimagepickercontroller

Вопрос:

Я использую гироскоп, чтобы определить, перпендикулярен ли мой ipad (отношение от 88 до 92 градусов) или нет. если это так, то можно сделать снимок. У меня есть что-то вроде красного или зеленого сигнала светофора, чтобы показать разрешение на съемку, но я не могу отключить кнопку захвата, когда горит красный, любая помощь будет оценена

вот мой код

 @IBAction func camera1(_ sender: Any) {
        var imageView : UIImageView
            imageView  = UIImageView(frame:CGRect(x:10, y:10, width:50, height:50));
        
        let imagePicker = UIImagePickerController()
            imagePicker.delegate = self
            imagePicker.allowsEditing = true
            imagePicker.sourceType = .camera
            imagePicker.cameraCaptureMode = .photo
            imagePicker.cameraOverlayView = imageView
            imagePicker.cameraViewTransform = imagePicker.cameraViewTransform.scaledBy(x: 3, y: 3);
        
        //Gyroscop
        func myGyroscope() {
            motion.deviceMotionUpdateInterval = 0.2
            motion.startDeviceMotionUpdates(to: OperationQueue()) { (motion, error) -> Void in
                       if let attitude = motion?.attitude {
                       // print(attitude.roll * 180 / Double.pi)
                        DispatchQueue.main.async{
                            if (((attitude.roll * 180 / Double.pi) * -1) > 88 amp;amp; ((attitude.roll * 180 / Double.pi) * -1) < 92 ){
                                imageView.image = #imageLiteral(resourceName: "GREEN_Light")//Take picture is permitted
                            } else{
                                imageView.image = #imageLiteral(resourceName: "Red_Light")//Take picture is not permitted
                            }
                        }
                    }
                }
                   }
        myGyroscope()
    
        present(imagePicker, animated: true, completion: nil)
    }

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    
        if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            frontpic.contentMode = .scaleAspectFit
                if (picker.sourceType.rawValue == 1){//if camera
                        frontpic.image = pickedImage.cropedToRatio(ratio: 0.33)
                } else{//if album
                        frontpic.image = pickedImage
                }
                
        }
       
        dismiss(animated: true, completion: nil)
    }
 

Ответ №1:

Вы не можете вмешиваться во встроенные элементы управления камерой. Если вам не нравится, как они ведут себя, удалите их и замените свой собственный интерфейс как часть cameraOverlayView .

Комментарии:

1. да, вы правы, но я не знаю, могу ли я использовать все функции во встроенной камере, такие как автофокусировка или изменение яркости и другие? все функции полезны, кроме этой, которой я хочу управлять. Есть ли какой-либо пример кода? Я такой новичок в ios