UIImagePickerController позволяет выбирать квадратные изображения. Но как я могу сделать это 16: 9? - PullRequest
0 голосов
/ 16 апреля 2019

Я установил UIImagePickerController и добавил код:

imagePickerController.allowsEditing = true

Это позволяет пользователю обрезать изображения, но только с соотношением 1: 1.

Но я хочу обрезать изображение в соотношении 16: 9, а не 1: 1. Как мне этого добиться?

1 Ответ

1 голос
/ 16 апреля 2019

Извините, но вы не можете изменить коэффициент выбора изображения по умолчанию.поэтому вам нужно использовать стороннюю библиотеку.Я использую библиотеку ниже, чтобы управлять кроппером, чтобы вы могли использовать его.https://www.cocoacontrols.com/controls/alcameraviewcontroller.

Вот код для управления коэффициентом обрезки.

func addImagePickerOnController(callBack: @escaping(_ image:UIImage)-> ()) {
    var croppingParameters: CroppingParameters {
        return CroppingParameters(isEnabled: true, allowResizing: true, allowMoving: true, minimumSize: CGSize(width: 60, height: 60))
    }

    let alertController = UIAlertController(title: nil, message: "Choose Image", preferredStyle: .actionSheet)
    let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { action in
    }
    alertController.addAction(cancelAction)

    let cameraAction = UIAlertAction(title: "Camera", style: .default) { action in
        let cameraVC = CameraViewController(croppingParameters: croppingParameters, allowsLibraryAccess: false, allowsSwapCameraOrientation: true, allowVolumeButtonCapture: true) { [weak self] image, asset in
            if (image != nil){
                callBack(image!)
            }
            self?.dismiss(animated: true, completion: nil)
        }
        self.present(cameraVC, animated: true, completion: nil)
    }

    let galleryAction = UIAlertAction(title: "Gallery", style: .default) { action in
                let libraryViewController = CameraViewController.imagePickerViewController(croppingParameters: croppingParameters) { [weak self] image, asset in
                    if (image != nil){
                        callBack(image!)
                    }
                    self?.dismiss(animated: true, completion: nil)
                }

                self.present(libraryViewController, animated: true, completion: nil)
    }
    alertController.addAction(cameraAction)
    alertController.addAction(galleryAction)
    self.present(alertController, animated: true)
}
...