4

AirPlay に問題があります。問題は、私は ATV3 で開発しており、私の TV セットは 1080p をサポートしています。しかし、スクリーン ミラーリングを開始して UIScreen の新しいインスタンスを受け取ると、境界と applicationFrame の両方で 720p の解像度が得られます。

しかし、実際にサブビューを負の値に移動すると、画面全体が覆われてしまいます。したがって、技術的には私の iPhone は 1080p でストリーミングしていますが、UIScreen によって返される境界はアンダースキャンされています。

overscanCompensation境界または applicationFrame を取得する前に を変更しようとしましたが(3 つのoverscanCompensation値すべてを使用して両方を試しました)、それでも同じ結果が得られます。

ここに私が得ているものの写真があります(申し訳ありませんが、これは地球上で最悪の写真です.

赤のビューは、bounds プロパティによって報告された 720p です。 赤いビューは、によって報告された 720pboundsです。

実際に ATV2 でこれを試してみるとさらに奇妙になり (1080p をサポートしていても 720p に制限されていると思われます)、結果はまったく同じです。

とにかく、誰かが私のアプリに設定ビューを入れないように実際の画面表示を取得する方法を知っていれば、本当に感謝しています。

前もって感謝します :)

4

3 に答える 3

2

overscanCompensation3つのモードすべてを試したとあなたが言ったとき、私はあなたが3つの文書化されたモードを意味していると推測します:

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

ただし、そこにはありませんが、問題を解決するはずの 4 番目のモードがありoverscanCompensationます3

また、このSO questionもご覧ください。

于 2013-03-04T18:06:15.257 に答える
1

ほとんどのテレビに最適な設定は次のとおりです。

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

UIScreenOverscanCompensationInsetApplicationFrame に設定するだけでは、UIWindow の内容がずれることがあります。

3 は UIScreenOverscanCompensationInsetBounds(1) と UIScreenOverscanCompensationInsetApplicationFrame(2) のビットマスクです。この数値がどこから来て、なぜ機能するのか疑問に思っている人向けです。

于 2013-08-27T17:08:45.263 に答える