2010-10-28 67 views
5

我想在全屏播放時在我的視頻播放器上添加一個按鈕。我在我的電視機上創建了一個疊加層,它在iPhone上運行得非常好。我嘗試在iPad上做同樣的事情,但按鈕從不出現。MPMoviePlayer覆蓋全屏模式(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。

任何人對我如何做到這一點有任何想法?

謝謝!

回答

3

我找到了解決這一問題的幾個星期前:

看來這種方法並不在iPad上正常工作(我還沒有檢查iPhone SDK 4>),所以爲了避開它,你可以做以下。

將視頻和設置添加到全屏後,您可以直接將控件添加到UIWindow(例如[[[[[[UIApplication sharedApplication]窗口] objectAtIndex:0] addSubView:myView]),它們將出現在您的頂部視頻視頻。

我發現的唯一問題是,他們不服從視圖的方向規則,我手動必須在視圖的willRotateToInterfaceOrientation方法中編寫旋轉代碼。

+1

你能解釋你如何處理方向?很高興看到一些代碼。謝謝 – Alex1987 2011-04-05 08:04:30

+0

我以同樣的方式添加了覆蓋。你解決了輪換問題嗎? – 1110 2011-04-29 06:25:21

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' 
    }