0

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];
}
4

2 に答える 2

3

質問と回答の両方をありがとう。しかし、次のコードは実際に私にとってはうまくいきました:

moviePlayer = [[MPMoviePlayerController alloc] init];
[moviePlayer.view setFrame: _viewPlayer.bounds];
[moviePlayer.view setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
[_viewPlayer addSubview:moviePlayer.view];

.
. /* set constraints */
.

[moviePlayer setScalingMode:MPMovieScalingModeAspectFill];
于 2013-11-08T21:10:00.073 に答える