Отражение поведения 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];
Этот метод захватывает текущее визуальное содержимое экрана с сервера рендеринга и использует их для создания нового представления снимка. Вы можете использовать возвращенное представление снимка в качестве визуальной замены содержимого экрана в вашем приложении. (...) этот метод быстрее, чем пытаться визуализировать содержимое экрана в растровое изображение самостоятельно.
Кроме того, посмотрите на ссылки ниже. Они должны дать вам некоторое представление и указать правильное направление.