Сбой приложения iOS 12 с UIImagePickerController в ландшафтном режиме на iPhone X / XS - PullRequest
0 голосов
/ 02 октября 2018

Я сталкивался со следующим, который я считаю ошибкой в ​​iOS 12. Это хорошо работало в iOS 11.4.1.Попробуйте следующее.

Откройте новый проект в Xcode 10. Добавьте кнопку пользовательского интерфейса.Добавьте следующее в PLIST Privacy - Camera Usage Description с некоторым описанием.

Скопируйте следующий код:

import UIKit

class ViewController: UIViewController {

    let imagePickerController = UIImagePickerController()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    @IBAction func takePic(_ sender: Any) {

        takePicture()
    }

    func takePicture() {

        imagePickerController.allowsEditing = false
        imagePickerController.sourceType = UIImagePickerController.SourceType.camera
        imagePickerController.cameraCaptureMode = .photo
        imagePickerController.modalPresentationStyle = .fullScreen

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

}

Подключите UIB-кнопку к IBAction takePic.

Запустите приложение на устройстве iOS 12, поскольку на симуляторе нет камеры.UIImagePickerController должен показывать камеру.

Теперь удалите Portrait из Ориентации устройства в Xcode Targets-> Deployment Info.Запустите снова, и приложение будет аварийно завершать работу со следующим:

*** Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and [CAMViewfinderViewController shouldAutorotate] is returning YES'
*** First throw call stack:
(0x1d1ecff78 0x1d10c8284 0x1d1dd075c 0x1ff912b30 0x1ff913130 0x1ff9139a0 0x1ff8fcff0 0x1ff8d70bc 0x1ff8d6e84 0x1ff8d6e84 0x1ff8d6e84 0x1ff8d6e84 0x1ff8c9968 0x1ff8c982c 0x1ff8d9d88 0x1ff894ab4 0x1ff91dbb4 0x1ff550888 0x1ff904430 0x1ff21171c 0x1ff1fed44 0x1ff22fa84 0x1d1e5bfe0 0x1d1e56ab8 0x1d1e5703c 0x1d1e56844 0x1d4105be8 0x1ff205428 0x102f9d9f4 0x1d190c020)
libc++abi.dylib: terminating with uncaught exception of type NSException 

Это раньше работало на устройствах на iOS 11 ...

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

ОБНОВЛЕНИЕ: Появляется только сбой на iPhone X / XS

Спасибо.

1 Ответ

0 голосов
/ 06 ноября 2018

У меня была такая же проблема с iPhone X на iOS 12, что я сделал, чтобы решить ее:

  • Не задавать ориентацию интерфейса в файле проекта
  • Определениеначальная ориентация интерфейса в файле info.plist с использованием ключа Initial interface orientation и значения Landscape (right home button)
  • Наконец, в каждом из ваших UIViewController вы должны определить ориентацию интерфейса, используя, например,:

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask { return .landscape }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...