如何正确旋转MPMoviePlayerController?

时间:2011-08-09 16:43:05

标签: ios ipad rotation orientation mpmovieplayercontroller

我在调整MPMoviePlayerController实例时遇到了一些问题。我想让它根据iPad方向旋转。通常,它的工作原理。然而,有时会发生一些奇怪的事情,然后在我重新启动程序之前就已经搞砸了。

这是我的初始化代码:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Drew 320x240" ofType:@"mp4" inDirectory:nil];
myMPC = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];

[[myMPC view] setFrame: CGRectMake(0, 0, 597, 448)];
myMPC.view.transform = CGAffineTransformMakeRotation(SP_D2R(-90));
myMPC.view.center = CGPointMake(364, (850 / 2) + 168);

这是我的导演代码:

    -(void)orientationDetected:(UIEvent *)event{
    if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft) {
        if (myMPC) {
            myMPC.view.transform = CGAffineTransformMakeRotation(SP_D2R(90));
            myMPC.view.center = CGPointMake(405, (850 / 2));
        }
    } else if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight) {
        if (myMPC) {
            myMPC.view.transform = CGAffineTransformMakeRotation(SP_D2R(-90));
            myMPC.view.center = CGPointMake(364, (850 / 2) + 174);
        }
    }
}

以下是一些截图。前两个是它们应该是怎样的(一个是主页按钮,另一个是主页按钮),第三个是搞砸了。他们在这里:

Landscape Home Button Left

Landscape Home Button Right

Screw Up

正如你所看到的那样,这个男孩的视频移动到了位置,并留下了原本应该存在的黑色(虽然黑色矩形不是它应该在哪里 - 它应该更左边的位置那个例子)。一旦发生这种情况,所有后续设备轮换都会导致此问题(直到程序重新启动)。

这不是特定于模拟器的问题,因为这发生在实际的iPad上。再次,有时它旋转正常。有什么东西我不知道/有没有人知道为什么会发生这种情况/有没有人知道如何防止这种情况?

我很感激帮助。

谢谢你, 伊利亚安德

编辑:添加了初始化代码,现在嵌入了图片。

2 个答案:

答案 0 :(得分:1)

第一次使用MPMoviePlayerController时,我遇到了类似的问题。这个方向对我来说不起作用。

我找到的是:MPMoviePlayerViewController(它包含MPMoviePlayerControlle

使用这个新课程,我没有更多的方向问题。我也可以通过继承它来在shouldAutorotateToInterfaceOrientation中定义自己的方向。 (感觉像魔术:P)

请记住MPMoviePlayerViewController类是由[self presentMoviePlayerViewControllerAnimated:(MPMoviePlayerViewController)]

调用的

现在就按照你现在的方式管理方向非常繁琐且容易出错。

使用框架中的内置类可以更轻松地完成。

HTH

答案 1 :(得分:0)

我认为设置视频旋转的锚点可能会解决您的问题。

尝试按如下方式初始化:

NSString *path = [[NSBundle mainBundle] pathForResource:@"Drew 320x240" ofType:@"mp4" inDirectory:nil];
myMPC = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:path]];

[[myMPC view] setFrame: CGRectMake(0, 0, 597, 448)];
[[myMPC view].layer setAnchorPoint:CGPointMake( 0.5, 0.5 )]; // center of your view

视频现在应围绕其中心旋转。

您可以在the Apple Docs here

中找到更多详情