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

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

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

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

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

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


person Cheese    schedule 16.07.2014    source источник


Ответы (1)


зеркалирование AirPlay — это то, что вам нужно. AirPlay может работать в двух режимах:

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

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

Вариант 1 — вид на две односпальные кровати

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

Вариант 2 — UISnapshotting

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

UIView *snapshot = [view snapshotViewAfterScreenUpdates:YES];

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

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

person Rafa de King    schedule 16.07.2014
comment
Могу ли я поделиться/отражать экран/просмотр моего приложения на другом внешнем экране с помощью этого? - person Jamshed Alam; 09.09.2020