iPad VGA Connector - Зеркальный экран в собственном приложении? - PullRequest
19 голосов
/ 18 апреля 2010

Можно ли отразить экран через разъем VGA? Ничего не могу найти по этому поводу.

Ответы [ 3 ]

35 голосов
/ 20 апреля 2010

Я искал то же, что и ты. В прошлые выходные я написал небольшую категорию UIApplication, чтобы добавить поддержку зеркалирования. Я опубликовал код в Google Code.

http://code.google.com/p/iphoneos-screen-mirroring/

Чтобы использовать его, вам просто нужно настроить его в приложении, в котором делегат вашего приложения завершил запуск. Вот так:

[[UIApplication sharedApplication] setupScreenMirroringOfMainWindow:mainWindow framesPerSecond:20];

У меня был только один шанс опробовать его в прошлые выходные на большом экране телевизора с выходными кабелями Apple AV. Производительность не звездная, поэтому я бы не рекомендовал использовать частоту кадров выше 30 к / с ...

5 голосов
/ 23 сентября 2010

Думаю, стоит добавить, что фреймворк QuartzCore является обязательным, иначе у вас будет 4 ошибки во время компиляции.

Undefined symbols:
  "_CATransform3DMakeRotation", referenced from:
      -[UIApplication(ScreenMirroring) updateMirroredWindowTransformForInterfaceOrientation:] in UIApplication+ScreenMirroring.o
      -[UIApplication(ScreenMirroring) updateMirroredWindowTransformForInterfaceOrientation:] in UIApplication+ScreenMirroring.o
      -[UIApplication(ScreenMirroring) updateMirroredWindowTransformForInterfaceOrientation:] in UIApplication+ScreenMirroring.o
  "_kCAGravityResizeAspect", referenced from:
      _kCAGravityResizeAspect$non_lazy_ptr in UIApplication+ScreenMirroring.o
     (maybe you meant: _kCAGravityResizeAspect$non_lazy_ptr)
  "_OBJC_CLASS_$_CADisplayLink", referenced from:
      objc-class-ref-to-CADisplayLink in UIApplication+ScreenMirroring.o
  "_CATransform3DIdentity", referenced from:
      _CATransform3DIdentity$non_lazy_ptr in UIApplication+ScreenMirroring.o
     (maybe you meant: _CATransform3DIdentity$non_lazy_ptr)
ld: symbol(s) not found
collect2: ld returned 1 exit status
3 голосов
/ 19 апреля 2010

Каждому объекту UIWindow (в основном представлению верхнего уровня) назначается экран (UIScreen), и вы, конечно, можете установить нужный экран. Поэтому перенести основной контент на второй экран легко, а зеркалировать - сложно. (Если вы не хотите, чтобы лекция о том, почему это некрасиво, пропускается до следующего параграфа) Я считаю, что это намерение Apple, потому что рисовать одну и ту же вещь дважды, одну с НАМНОГО более высоким разрешением, и потому что опыт просмотра интерфейса перед этим переход в любой режим презентации довольно низок по сравнению с тем, что вы ничего не видите до тех пор, пока не будет воспроизведено видео, презентация основного выступления и т. д. Это то, что вы, очевидно, хотите рассмотреть в каждом конкретном случае, но, тем не менее, зеркалирование - это плохая идея.

UIWindow наследует от UIView, поэтому, хотя у меня нет особого личного опыта с этой точной вещью, вы все равно сможете заставить его рисовать в некотором виде растрового контекста, а затем использовать два разных UIWindows, каждое из которых имеет только просмотр изображения на них, подталкивая фактические пиксели к соответствующим экранам. Это значительно проще, если вы хотите отразить только одно конкретное пользовательское представление (не включая его подпредставления), потому что вы можете иметь это представление на экране устройства (для захвата любого ввода), а затем спроектировать его так, чтобы у вас был метод вызвать его, чтобы нарисовать в любом контексте, в котором он находится (некоторые drawRects могут работать нормально, как есть), и вызвать его из супер-специального удивительного пользовательского подпредставления на другом экране, который реализует drawRect, чтобы просто вызывать метод в реальном представлении.

Надеюсь, это поможет, извините, я немного побеспокоился: (

...