MPMoviePlayer以全屏模式覆盖(iPad)

时间:2010-10-28 18:20:38

标签: ipad mpmovieplayercontroller iphone

我想在全屏播放时在我的视频播放器上添加一个按钮。我在我的视频播放器上创建了一个Overlay,它在iPhone上工作得很好。我试着在iPad上做同样的事情,但按钮永远不会出现。

这是我的代码:

 NSArray *windows = [[UIApplication sharedApplication] windows];
 if ([windows count] > 1){
       UIWindow * moviePlayerWindow = [windows objectAtIndex:1];
       NSArray * subviews = [moviePlayerWindow subviews];
       UIView * videoView = [subviews objectAtIndex:0];
       [videoView addSubview:myButton];
}

像ipad这样的接缝不会为全屏模式创建UIWindow。

任何人都知道如何做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:3)

几周前我找到了解决这个问题的方法:

似乎这种方法在iPad上不起作用(我还没有检查过iPhone SDK 4>)所以为了解决这个问题,你可以做到以下几点。

添加视频并设置为全屏后,您可以直接将控件添加到UIWindow(例如[[[[UIApplication sharedApplication] windows] objectAtIndex:0] addSubView:myView]),它们将显示在视频的顶部视频。

我发现的唯一问题是它们不遵守视图的方向规则,我手动必须在视图的willRotateToInterfaceOrientation方法中编写旋转代码。

答案 1 :(得分:2)

@tigermain的解决方案有效。

  

[[[[UIApplication sharedApplication] windows] objectAtIndex:0] addSubView:myView]

但添加到窗口的视图不遵循方向。

方向的解决方案是使用NSNotificationCenter,UIApplicationDidChangeStatusBarOrientationNotification。

    // assign a notification
    id center = [NSNotificationCenter defaultCenter];
    [center addObserver:self
             selector:@selector(didRotate:)
                 name:UIApplicationDidChangeStatusBarOrientationNotification
               object:nil];

    // this method will get called when the orientation changes
    -(void) didRotate:(NSNotification*)notification {

        UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
        NSLog(@"%d", orientation);
        // ... transform view accordingly to the enum 'UIInterfaceOrientationXXX'
    }