MonoTouch의 AV Foundation에서 제공하는 AVPlayer API를 사용하여 비디오 플레이어를 개발 중입니다. 전체 화면 모드를 구현하려고합니다. 전체 화면 : 부모보기의 크기를 조정할 때 AVPlayerLayer의 크기가 조절되지 않습니다.
내가 가진, 비디오 프레임을 표시하려면 내가 재생보기 층의 서브 뷰으로 AVPlayerLayer을 추가 UIView의 (의 재생보기를 부르 자) :UIView *playbackView = ...
AVPlayerLayer *playerLayer = ...
[playbackView.layer addSublayer:playerLayer];
레이어 속성 그런 설정됩니다
playerLayer.needsDisplayOnBoundsChange = YES;
playbackView.layer.needsDisplayOnBoundsChange = YES;
재생보기 크기가 변경되면 크기가 조정되는지 확인하십시오. 처음에는 재생 뷰의 좌표 (0, 0, 320, 180)가 UI의 맨 위에 표시됩니다. 그럼, 창 크기로서 재생보기 프레임 크기를 설정하여 전체 화면 애니메이션을하고있는 중이 야 : 그것은
playbackView.frame = playbackView.window.bounds;
가 잘 작동합니다. 재생 뷰는 이제 모든 창을 채 웁니다 (보려는 배경색 설정). 하지만 내 AVPlayerLayer는 이전처럼 전체 화면 모드가 아닌보기의 맨 위에 머물러 있습니다.
재생보기의 새 크기에 따라 AVPlayer 레이어의 크기가 조정되지 않는 이유는 무엇입니까? AVPlayerLayer에서도 애니메이션을 만들어야합니까? setNeedsLayout, layoutSubviews를 새로 고침 (변경되지 않은 것 같은데 ...)? AVPlayerLayer를 제거하고 다시 추가 하시겠습니까?
한가지 해결책도에 따른 계층 프레임 크기를 조절하는 것이다 애니메이션 도중 재생 뷰 프레임 (playerLayer.frame = playbackView.frame). 하지만 이렇게하면 레이어가 애니메이션으로 표시되지 않고 최종 크기로 직접 표시됩니다. 이 변경 사항을 어떻게 애니메이트 할 수 있습니까? UIView 애니메이션 대신 Core Animation을 사용 하시겠습니까? – nicolas