2013-02-26 68 views
4

我在使用AirPlay時遇到了一些問題。事情是,我正在開發ATV3,而我的電視機支持1080p。但是當我開始屏幕鏡像並接收UIScreen的新實例時,界限和應用程序框架都給我一個720p分辨率。使用AirPlay鏡像時發生未知掃描問題

但是,當我實際上將子視圖移動到負值並且覆蓋整個屏幕時,它變得很奇怪。因此,從技術上講,我的iPhone以1080p流媒體播放,但UIScreen返回的邊界未被掃描。

我已經嘗試修改overscanCompensation獲取邊界或應用程序框架(嘗試所有3 overscanCompensation值可用),但我仍然得到相同的結果。

這裏是什麼我得到的圖片(對不起,它在地球上最壞的圖片,我知道,但我是用我的手機給圖像流亞視:))

Red view is the 720p reported by the bounds property. 紅色視圖是由bounds報告的720p。

當我真的在ATV2上試用這款產品時(即使它支持1080p,它被限制爲720p),結果是完全一樣

無論如何,如果有人知道得到真正顯示屏避免把一個設置在我的應用程序查看的方法,我會很感激它。

感謝提前:)

+0

你肯定地確定你在ATV2上實際上是1080p,而不是一些內插結果? – Till 2013-02-26 03:28:38

+0

不是真的,但如果你給我一段時間,我會嘗試檢查。無論如何,ATV2支持1080p分辨率(您可以在首選項中查看),但無法以超過720p的分辨率完美解碼視頻。 – 2013-02-26 03:30:56

+1

AFAIK AirPlay鏡像在ATV上限制爲720 - 但這可能是過時的信息 - 只是一個提示。因爲這裏實際上有一個相關的問題。 http://stackoverflow.com/questions/9952739/airplay-on-new-apple-tv-3rd-gen-for-second-screen-not-at-1080p – Till 2013-02-26 03:37:07

回答

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 – 2015-07-12 14:36:16

2

當你提到你嘗試了所有3種overscanCompensation模式,我想你指的是3種記錄模式:

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

然而,還有第四個模式,這不在那裏,但應該解決您的問題:只需將您的overscanCompensation設置爲3

另外,看看這個SO question

2

伊萬的答案爲我解決了同樣的問題!但使用AirPlay鏡像時我也有邊框。我沒有通過更改Apple TV上的設置來設置overscanCompensation屬性來擺脫邊框:嘗試設置'設置>音頻&視頻>調整AirPlay Overscan'爲關(默認開啓)。