2011-12-12 7 views
8

AVPlayerのカスタムムービープレーヤーを実装しました。 の値をAVLayerVideoGravityResizeAspectFillに設定すると、希望の効果がiOS4.2, 4.3に表示されます。しかし、どういうわけかiOS 5.0には何の効果もありません。誰も似たような問題を見ていますか?私は何か間違っているのですか?ビデオグラビティをAVLayerVideoGravityResizeAspectFillに設定してもiOS 5.0には影響ありません

答えて

16

iOS5では、videoGravityを設定した後にレイヤー境界をリセットする必要があります。

これが私の仕事:

((AVPlayerLayer *)[self layer]).videoGravity = AVLayerVideoGravityResizeAspectFill; 
((AVPlayerLayer *)[self layer]).bounds = ((AVPlayerLayer *)[self layer]).bounds; 

EDITED: "自己" のポイントをPlayerView(のUIViewのサブクラス)オブジェクトに例から "すべて一緒に置く": https://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html

+0

グレートアンサー!!! Thk。 –

+0

リセットしたらどういう意味ですか?あなたがしていることは何もありません。最後の行の2つの辺は等しい。予想どおり、これはiOS 8には影響しません。 – SpaceDog

3

あなたができましたmihamの提案であなたの問題を解決する?私の質問はこの「BoltClock」司会者によって禁止されています。ちょうどその提案があなたのために働いていたかどうかを知りたければ、それは私のためではありませんでした。

私の質問を削除しないでください。私は、どのタイプの「自己」オブジェクトが尋ねるのが正当であると思います。 mihamはその解決法が彼のために働いたと述べています。私にとってはうまくいかなかったので、私はどのような種類のオブジェクトを使うべきかという手がかりを与えてくれるかもしれません。 AVLayerVideoGravityResizeAspectFillに重力を設定すると、AVPlayerLayerビューにビデオがクリップされますが、それはしません。私はこれをiOS 4.3.2とiOS 5でテストしました。その結果、miamの答えはSoumya Dasオリジナルの質問自分自身に何を指しているのだろうか?多分あなたは答えを持っていますか?もしそうなら、ここに投稿して、私の質問を削除しないでください。

EDITED: この問題の解決方法が見つかりました。 ビデオプレーヤーを接続するレイヤーを表示するには、IBの[クリップサブビュー]チェックボックスをオンにします。次に、AVPlayerLayerオブジェクトのAVLayerVideoGravityResizeAspectFillを設定します。 IBでビューを作成せずにプログラムで作成する場合は、clipsToBoundsプロパティをYESに設定します。

関連する問題