4

我目前正在尝试为存储在自定义类(VideoEngine)中的 MPMoviePlayerController 设置框架。电影使用 URL 设置,该 URL 由用户在应用程序期间捕获的视频提供。(我希望这一点有意义)。然后我设置 MPMoviePlayerControllers 视图如下:

    - (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    //[self.image setImage:[info objectForKey:UIImagePickerControllerMediaURL]];
    videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
    [parentView dismissModalViewControllerAnimated:NO];

    VideoEngine *ve = [[VideoEngine alloc] initWithCallbackName:@"movieFinishedPlaying"];
    [ve loadMovieURL:videoURL];
    [ve.player.view setFrame:CGRectMake((0 + self.frame.size.width * 0.2), self.frame.size.height * 0.3, self.frame.size.width * 0.6, self.frame.size.width * 0.4)];

    CGRect frame = ve.player.view.frame;

    self.video = ve;
    [self addSubview:self.video.player.view];
    [ve release];
}

首先,我想指出,我知道高度值是使用宽度设置的,但这是为了保持它更宽,然后它就很高(目前不关心这样做的方式)。如您所见,我有一个指向视图框架的指针,因此我可以检查值(它不会让我直接使用 po 访问)。以下是值的屏幕截图:

帧输出

正如你所看到的(差不多),框架是 192 宽 x 128 高,这很好。但是,当我在手机中查看它时,它看起来如下:

手机截图

手机已禁用所有旋转,因此它不应该因为旋转而尝试以奇怪的方式调整大小。我对此感到非常困惑,所以如果有人有任何想法,我将非常感激。

4

3 回答 3

20

好的,事实证明 MPMovieScaling 模式设置为适合方面,我不知道我是如何忽略这一点的,但如果人们遇到同样的问题,你只需要在某个地方设置它:

[mpMoviePlayerControllerInstance setScalingMode:MPMovieScalingModeFill];
于 2012-08-20T15:21:01.507 回答
8

将 MPMoviePlayerController 更改为您的电影播放器​​名称

[yourplayername setScalingMode:MPMovieScalingModeFill];

//它适合视图的全帧

于 2012-09-01T05:13:13.583 回答
0

我认为这将是一个更好的选择,因为它可以避免压缩视频:

[self.moviePlayer setScalingMode:MPMovieScalingModeAspectFill];
于 2015-08-20T11:59:29.463 回答