Подтвердить что ты не робот

UIImagePickerController позволяет не работать

Я использую UIImagePickerController, чтобы позволить пользователю делать снимок. Я хочу, чтобы он впоследствии его редактировал, но что бы я ни делал, я ничего не получаю. Вот мой код (я использую Xamarin):

UIImagePickerController imagePicker = new UIImagePickerController ();
                // set our source to the camera
                imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
                // set what media types
                //imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes (UIImagePickerControllerSourceType.Camera);
                // show the camera controls
                imagePicker.ModalPresentationStyle = UIModalPresentationStyle.CurrentContext;
                imagePicker.ShowsCameraControls = true;
                imagePicker.AllowsEditing = true;
                imagePicker.SetEditing (true,true);
                imagePicker.PreferredContentSize = new SizeF(900,600);
                imagePicker.CameraCaptureMode = UIImagePickerControllerCameraCaptureMode.Photo;
                imagePicker.Title="taste.eat. image";
                // attach the delegate
                imagePicker.Delegate = new ImagePickerDelegate();
                // show the picker
                NavigationController.PresentViewController(imagePicker, true,null);

Я что-то пропустил?

EDIT:

Я следил за учебником, и я нахожусь на экране с прямоугольником, но если я панорамирую или увеличиваю масштаб, он просто отскакивает назад в центр, когда я поднимаю палец. Можно ли перейти к этому экрану из приложения для фотографий?

Image from the photos application

4b9b3361

Ответ 1

При использовании делегата UIImagePickerController -imagePickerController: didFinishPickingMediaWithInfo: мы получаем изображение, используя

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];

Этот код всегда будет возвращать исходное изображение, даже если редактирование включено.

Попробуйте использовать

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];

Это приведет к возврату отредактированного изображения, если редактирование включено.

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

Ответ 2

Свойство AllowsEditing просто позволяет пользователю обрезать квадрат, если вы выбираете изображение и обрезаете видео, если вы выбираете видео.

Любые другие функции должны быть реализованы с помощью пользовательского интерфейса и кода.

Посмотрите на этот вопрос: iPhone SDK - Как настроить обрез в UIImagePickerController с помощью allowEditing?

То, что вы показываете на скриншоте, не является частью UIImagePickerController, к сожалению

Ответ 3

SWIFT 3

Мне было трудно вернуть обрезанное изображение (простая ошибка на моем конце). Вместо использования UIImagePickerControllerOriginalImage вам потребуется UIImagePickerControllerEditedImage. См. Ниже:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    // The info dictionary contains multiple representations of the image, and this uses the cropped image.
    let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage

    // Set yourImageView to display the selected image.
    yourImage.image = selectedImage

    // Dismiss the picker.
    dismiss(animated: true, completion: nil)
}

Ответ 4

В enable filters нет способа изменить свойство, например allowsEditing = YES. Он отобразит только инструмент обрезки. Согласно вашему снимку экрана, похоже, что у вас встроена некоторая некорректная библиотека с открытым исходным кодом, и, не глядя на исходный код, было бы сложно исправить ошибку обрезки центра.

Лучше публиковать некоторые конкретные подробности о вашей реализации или переключиться на .

Ответ 5

Это будет такая работа.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage

    userPhoto.image = selectedImage

    dismiss(animated: true, completion: nil)
}