Отражение поведения UIView на внешнем дисплее

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

Допустим, что это представление было создано динамически и отображается на экране iPad (не во весь экран):

введите описание изображения здесь

Конечно, трудно контролировать и определять, какое контрольное значение было изменено пользователем, особенно, например, просмотрщиками прокрутки и слайдами, чтобы показать изменение в реальном времени на внешнем дисплее.

Есть ли способ не добавлять события к каждому элементу управления, а затем изменять экземпляр элемента управления на внешнем экране, а создавать просто фиктивное отражение, которое будет отображать изменения реального времени в реальном времени? UIView на iPad?

1 ответ

AirPlay - это то, что вы ищете. AirPlay может работать в двух режимах:

  • весь экран зеркально отображается на устройстве AirPlay
  • есть два UIWindow/UIScreenс, и один из них отражается.

Так как вид, который вы хотите отразить, не является полноэкранным. Вы должны пойти на второй вариант. К сожалению, нет никакого технического способа иметь единственный экземпляр UIView показать на обоих окнах.

Вариант 1 - Твин просмотров

Если вы хотите, чтобы одно и то же отображалось на обоих экранах, вам нужно создать два экземпляра одного и того же UIViewи добавьте их соответственно в два окна, а затем обновите их по мере их изменения.

Вариант 2 - UISnapshotting

Другой вариант - установить таймер и обновить содержимое окна, которое вы хотите представить, пару раз в секунду. С iOS 7 Apple представила UISnapshotting и они утверждают, что это действительно быстро, намного быстрее, чем renderInContext:, Я не исследовал, достаточно ли высока его производительность, чтобы вызывать ее много раз в секунду, но она должна работать.

UIView *snapshot = [view snapshotViewAfterScreenUpdates:YES];

Этот метод захватывает текущее визуальное содержимое экрана с сервера рендеринга и использует их для создания нового представления снимка. Вы можете использовать возвращенное представление снимка в качестве визуальной замены содержимого экрана в вашем приложении. (...) этот метод быстрее, чем пытаться визуализировать содержимое экрана в растровое изображение самостоятельно.

Кроме того, посмотрите на ссылки ниже. Они должны дать вам некоторое представление и указать правильное направление.

Другие вопросы по тегам