API Youtube для iOS больше не поддерживает альбомную ориентацию с iOS 10?

Я использую YTPlayerView Youtube API для поддержки видео в своем приложении.

До выпуска iOS10 мое приложение правильно переключало видео в альбомную ориентацию, когда видео воспроизводилось в полноэкранном режиме и поворачивало устройство.

Поскольку я обновился до iOS10, видео больше не вращается вместе с устройством, это можно воспроизвести в симуляторе (работает с iOS 9, больше не работает с iOS 10).

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

Любой совет? Спасибо


person Jerome    schedule 29.09.2016    source источник
comment
Я думаю, что только гуглер может ответить вам на это. Я не вижу обновленной версии, касающейся этой проблемы, которую вы можете увидеть в API данных и Помощник iOS. Если вы считаете, что это ошибка, попробуйте подать заявку по этой проблеме.   -  person KENdi    schedule 02.10.2016


Ответы (1)


Из-за того, как режим ориентации обрабатывается в iOS 10, у вас есть следующие варианты:

"Политически" правильное решение

1) разрешить вашему приложению быть во всех режимах ориентации в info.plist

2) запретить ландшафт везде

Хакерское решение

Ваш AppDelegate вызывается каждый раз, когда вы поворачиваете телефон относительно поддерживаемых ориентаций для определенного окна. Поэтому, если вы можете обнаружить, что контроллер представления внутри «текущего окна» является контроллером представления youtubevideo, вы можете вернуть все ориентации, в противном случае вернуть portret.

  func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    guard let topController = window?.topController() else {
      return application.supportedInterfaceOrientations(for: window)
    }

    let className = NSStringFromClass(type(of: topController))
    let hackyViewControllers = ["avfullscreenviewcontroller"]

    if hackyViewControllers.contains(className.lowercased()) {
      return .allButUpsideDown
    } else {
      return .portrait
    }
  }

** как видите, мы проверяем AVFullScreenViewController, который является подклассом UIViewController, отвечающим за отображение видео на YouTube в полноэкранном режиме.

person Fawkes    schedule 27.03.2017