Наша компания использует телевизор в портретной ориентации, подключенный к Apple TV, на котором запущено наше собственное приложение, которое служит статусной доской.Это чисто внутреннее, взломанное приложение - не нужно беспокоиться об отправке в App Store.
Чтобы избежать визуализации объектов в боковом направлении, у нас есть контроллер представления базового класса, выполняющий CGAffineTransform на 90 градусов для представления (ивсе остальные контроллеры представления в проекте наследуются от этого базового класса):
class PortraitViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.transform = CGAffineTransform(rotationAngle: -1*CGFloat.pi/2)
}
}
Это прекрасно работает для отображения изображений, текста, видео, пользовательских элементов управления пользовательского интерфейса и т. д. Однако механизм фокусировки не вращается вместе си поскольку он ожидает, что телевизор все еще отображается в горизонтальной ориентации, дистанционные жесты Apple TV заканчиваются на 90 градусов от того, что мы хотим.Вот пример:
Здесь мы бы хотели провести пальцем вправо / влево на пульте дистанционного управления, чтобы переместить фокус сегментированного элемента управления между двумя сегментами.Но поскольку Apple TV считает, что его показывают в альбомном режиме, она считает, что сегментированный элемент управления ориентирован вертикально, а перемещение вверх / вниз перемещает фокус сегментов.
Кто-нибудь знает, есть ли способ убедитьмеханизм фокусировки, чтобы не вращаться рядом с видом, или, альтернативно, другой способ отобразить вид в портретном режиме, не поворачивая вид?