YouTube ビデオが歪まないように拡大縮小しようとしていますが、黒いバーが表示されないようにしています。これを達成するためにビデオのエッジをトリミングしても問題ないので、MPMovieScalingModeAspectFill が最適なオプションのようです。また、このビューは別のビューに含まれています。
ただし、私が行っているプロジェクトでは、コード内の制約を使用してすべての UI を構成する必要があります。nibファイルや絵コンテが使えません。エッジを実際にトリミングするのが難しいと感じています (ビューの上部と下部に収まるようにビデオが拡大され、水平部分がビューからこぼれています)。実際のフレームを定義するために CGRect を使用するのではなく、制約を使用します。
私の具体的な質問は次のとおりです。
- MPMovieScalingModeAspectFill を取得して、UI を制約付きで定義しながらビデオをトリミングすることはできますか?
- 可能であれば、コードで何が間違っていますか?
以下は、ビデオ プレーヤー ビューを作成するメソッドの一部を含む .m ファイルの例です。
- (void) createMediaPlayer: (NSURL *)videoURL {
YouTubeVideo *selectedVideo = [youTubeCollection.items objectAtIndex:youTubeCollection.currentItem];
moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:selectedVideo.contentsURL]];
[moviePlayerController setContentURL:videoURL];
[moviePlayerController setShouldAutoplay:YES];
[moviePlayerController setRepeatMode:MPMovieRepeatModeNone];
[moviePlayerController setFullscreen:NO];
[moviePlayerController setControlStyle:MPMovieControlStyleNone];
[moviePlayerController setScalingMode:MPMovieScalingModeAspectFill];
playingVideo = YES;
moviePlayerController.view.translatesAutoresizingMaskIntoConstraints = NO;
[videoPlayerView addSubview:moviePlayerController.view];
[videoPlayerView sendSubviewToBack:videoPlayerView];
// Configure Constraints
[videoPlayerView addConstraint:[NSLayoutConstraint constraintWithItem:moviePlayerController.view
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:videoPlayerView
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:0.0]];
[videoPlayerView addConstraint:[NSLayoutConstraint constraintWithItem:moviePlayerController.view
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:videoPlayerView
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:0.0]];
[videoPlayerView addConstraint:[NSLayoutConstraint constraintWithItem:moviePlayerController.view
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:videoPlayerView
attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:0.0]];
[videoPlayerView addConstraint:[NSLayoutConstraint constraintWithItem:moviePlayerController.view
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:videoPlayerView
attribute:NSLayoutAttributeRight
multiplier:1.0
constant:0.0]];
[moviePlayerController prepareToPlay];
[moviePlayerController play];
}