2010-10-28 11 views
5

Ich möchte einen Button auf meinem Videoplayer hinzufügen, wenn er im Vollbildmodus abgespielt wird. Ich habe ein Overlay auf meinem Videoplayer erstellt und es funktioniert sehr gut auf einem iPhone. Ich habe das gleiche auf einem iPad versucht, aber der Knopf erscheint nie.MPMoviePlayer-Overlay im Vollbildmodus (iPad)

Hier ist mein Code:

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

Es Nähte wie das ipad dosen't eine UIWindow für den Vollbild-Modus erstellen.

Jeder hat eine Idee, wie ich das tun könnte?

Danke!

Antwort

3

fand ich vor ein paar Wochen für dieses Problem eine Lösung:

Es ist diese Methode auf dem iPad funktioniert nicht scheint (I haben 4 iPhone SDK geprüft>) so um rund um es zu bekommen Sie das tun können, Folgendes.

Nachdem Sie Ihr Video und die Einstellung zum Vollbild hinzugefügt haben, können Sie Ihre Steuerelemente direkt zum UIWindow hinzufügen (zB [[[[UIApplication sharedApplication] windows] objectAtIndex: 0] addSubView: myView]), sie erscheinen dann auf Ihrem Videovideo.

Das einzige Problem, das ich damit gefunden habe, ist, dass sie nicht den Orientierungsregeln der Ansicht gehorchen, und ich musste manuell den Rotationscode in der Methode writRotateToInterfaceOrientation der Ansicht programmieren.

+1

Können Sie erklären, wie Sie mit der Ausrichtung umgegangen sind? Wäre froh, einen Code zu sehen. Danke – Alex1987

+0

Ich habe Overlay auf die gleiche Weise hinzugefügt. Hast du das Rotationsproblem gelöst? – 1110

2

Die Lösung von @tigermain funktioniert.

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

Aber die Aussicht auf das Fenster hinzugefügt folgt nicht der Orientierung.

Lösung für die Orientierung ist die Verwendung von 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' 
    } 
Verwandte Themen