【问题标题】:disable or enable capture button in UIImagePickerController在 UIImagePickerController 中禁用或启用捕获按钮
【发布时间】:2020-11-29 12:45:59
【问题描述】:

我正在使用陀螺仪来确定我的 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 && ((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)
    }

【问题讨论】:

    标签: ios swift xcode uiimagepickercontroller


    【解决方案1】:

    您不能干扰内置的相机控件。如果您不喜欢他们的行为方式,请remove them 并将您自己的界面替换为cameraOverlayView 的一部分。

    【讨论】:

    • 是的,你是对的,但我不知道我能否拥有内置相机的所有功能,如自动对焦或改变亮度等?除了我要管理的这个功能之外,所有功能都很有用。有代码示例吗?我是 ios 新手
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    相关资源
    最近更新 更多