Подтверждение выбора изображения в ImagePicker - PullRequest
0 голосов
/ 15 апреля 2019

Я использую UIImagePickerController, чтобы сделать снимок. После того, как я сделал снимок, мне представили возможность подтвердить снимок или сделать повторный снимок. Это представление не выровнено по-разному, похоже, что оно выровнено по нижней части экрана. Есть ли способ выровнять оба вида в верхней части экрана или я могу пропустить этот шаг?

Screenshot of both views

imagePickerController = UIImagePickerController()
imagePickerController.delegate = self

//check if camera is available
if UIImagePickerController.isSourceTypeAvailable(.camera) {
    imagePickerController.sourceType = .camera
} else {
    imagePickerController.sourceType = .photoLibrary
}

self.present(imagePickerController, animated: true, completion: nil)

1 Ответ

0 голосов
/ 15 апреля 2019

Ну, вы не можете отобразить этот экран подтверждения с помощью пользовательских элементов управления. Это довольно простой пример:

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

  @IBOutlet weak var textField: UITextField!
  var imagePickerController: UIImagePickerController!

  override func viewDidLoad() {
    super.viewDidLoad()

    guard UIImagePickerController.isSourceTypeAvailable(.camera) else { return }
    imagePickerController = UIImagePickerController()
    imagePickerController.sourceType = .camera
    imagePickerController.showsCameraControls = false
    imagePickerController.delegate = self

    // Button to take picture
    let takePictureButton = UIButton()
    takePictureButton.setTitle("Take Picture", for: .normal)
    imagePickerController.view.addSubview(takePictureButton)

    // Positioning button
    takePictureButton.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([
      takePictureButton.centerXAnchor.constraint(equalTo: imagePickerController.view.centerXAnchor),
      takePictureButton.bottomAnchor.constraint(equalTo: imagePickerController.view.bottomAnchor, constant: -50)
      ])

    // Set button target
    takePictureButton.addTarget(self, action: #selector(didTouchTakePictureButton(_:)), for: .touchUpInside)

    self.present(imagePickerController, animated: true, completion: nil)
  }

  @objc func didTouchTakePictureButton(_ sender: UIButton) {
    imagePickerController.takePicture()
  }

  func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    guard let image = info[.originalImage] as? UIImage else { return }
  }
}

Остерегайтесь следующего, хотя: 1. Вам будет разрешено использовать .camera только для типа источника; 2. У вас нет никаких элементов управления, поэтому вы должны добавить все настройки самостоятельно;

Надеюсь, это поможет!

...