2013-02-26 3 views
4

У меня возникли проблемы с AirPlay. Дело в том, что я развиваюсь с помощью ATV3, а мой телевизор поддерживает 1080p. Но когда я запускаю зеркальное отображение экрана и получаю новый экземпляр UIScreen, границы и applicationFrame оба дают мне разрешение 720p.Устранение неполадок с зеркалированием AirPlay

Но это становится странным, когда я фактически переместил subviews на отрицательное значение, и весь экран покрыт. Итак, технически мой iPhone работает на скорости 1080p, но границы, возвращаемые UIScreen, не поддаются контролю.

Я пробовал модифицировать overscanCompensation перед тем, как получить границы или applicationFrame (испробованы оба значения 3 overscanCompensation), но я все равно получаю тот же результат.

Вот картина того, что я получаю (извините, это самое худшее изображение на планете, я знаю, но я использовал свой телефон для потоковой передачи изображения на ATV :))

Red view is the 720p reported by the bounds property. Красный вид - это 720p, о котором сообщается bounds.

Он становится еще более странным, когда я на самом деле пытаюсь это сделать в своем ATV2 (предположительно он ограничен 720p, даже если он поддерживает 1080p), и результат точно такой же.

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

Заранее спасибо :)

+0

Вы уверены, что на самом деле вы набираете 1080p на ATV2, а не какие-то интерполированные результаты? – Till

+0

Не совсем, но если вы дадите мне время, я постараюсь проверить.Во всяком случае, ATV2 поддерживает разрешение 1080p (вы можете проверить это в настройках), но он не может декодировать видео безупречно с разрешением более 720p. –

+1

AFAIK AirPlay зеркалирование ограничено на ATV до 720 - но это может быть устаревшая информация - всего лишь намек. Оу, на самом деле есть уже связанный с этим вопрос; http://stackoverflow.com/questions/9952739/airplay-on-new-apple-tv-3rd-gen-for-second-screen-not-at-1080p – Till

ответ

1

Установка, которая работает лучше всего подходит для большинства телевизоров:

externalScreen.overscanCompensation = UIScreenOverscanCompensationInsetBounds | UIScreenOverscanCompensationInsetApplicationFrame; // this is the same as setting it to 3 

Просто установить его в UIScreenOverscanCompensationInsetApplicationFrame может вызвать перекос содержимого UIWindow.

3 - это битовая маска UIScreenOverscanCompensationInsetBounds (1) и UIScreenOverscanCompensationInsetApplicationFrame (2) для тех, кто задается вопросом, откуда это число и почему оно работает.

+0

Swift Версия: 'externalScreen.overscanCompensation = UIScreenOverscanCompensation (rawValue: 3)! 1 –

2

Когда вы сказали, что вы пробовали все 3 overscanCompensation режимов, я полагаю, вы имеете в виду 3 документированных режимов:

typedef enum { 
UIScreenOverscanCompensationScale, 
UIScreenOverscanCompensationInsetBounds, 
UIScreenOverscanCompensationInsetApplicationFrame, 
} UIScreenOverscanCompensation; 

Однако Eсть четвертый режим, которого нет, но нужно исправить свои проблемы: просто установите overscanCompensation на 3.

Также взгляните на это SO question.

2

Ответ Иван решил для меня тот же вопрос! Но у меня также были границы при использовании AirPlay Mirroring. Я избавился от границ, не установив свойство overscanCompensation, изменив настройку на своем Apple TV: попробуйте установить «Настройки»> «Аудио» & Video> Adjust For AirPlay Overscan »на Off (по умолчанию включено).

 Смежные вопросы

  • Нет связанных вопросов^_^