Frage

Nehmen wir an, der Benutzer -Zapfteil auf eine Schaltfläche und das Video beginnt zu spielen. Wenn das Video jetzt abgespielt wird, immer im Vollbildmodus.

Das Video sollte in einem Porträtmodus abgespielt werden (normalerweise wird das Video im Landschaftsmodus gespielt). Wie kann ich das machen?

War es hilfreich?

Lösung

@interface MPMoviePlayerController (extend) 
 -(void)setOrientation:(int)orientation animated:(BOOL)value; 
@end 

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUR]; 
[moviePlayer setOrientation:UIDeviceOrientationPortrait animated:NO]; 
if (moviePlayer) 
{ 
    [self.moviePlayer play]; 
} 

Diese Lösung wird von Apple abgelehnt, da die Setorientierung für Filmplayer die private API ist. Sie müssen vorsichtig sein, aber es kann auf Jailbroke iPhones funktionieren.

Andere Tipps

Nur ein Update, das neueste iPhone SDK 3.2+ ermöglicht es den Programmierern nun, das Video in jeder gewünschten Größe und Orientierung anzuzeigen. eine Unteransicht zu Ihrer Ansicht.

Aus den dokumentierten Dokumenten denke ich nicht, dass dies mit dem eingebauten Media Player möglich ist

Probieren Sie das aus. Ich fand etwas Neues.

@interface MPMoviePlayerController (extend)
-(void)setOrientation:(int)orientation animated:(BOOL)value;
@end

moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieUR];
[moviePlayer setOrientation:UIDeviceOrientationPortrait animated:NO];
if (moviePlayer)
{
    [self.moviePlayer play];
}

Hier ist, was ich getan habe. Fügen Sie die NSNotifikation hinzu, um Sie beim Vorladen der Videos zu benachrichtigen.

- (void)playVideoUrl:(NSString *)videoUrl {
    NSURL *url = [NSURL URLWithString:videoUrl];
    MPMoviePlayerController* theMovie=[[MPMoviePlayerController alloc]   
             initWithContentURL:url]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 

    //MPMoviePlayerContentPreloadDidFinishNotification
    [[NSNotificationCenter defaultCenter] addObserver:self                           
                       selector:@selector(myMovieFinishedPreloading:)                                            
                           name:MPMoviePlayerContentPreloadDidFinishNotification                                                
                         object:theMovie]; 


    // Movie playback is asynchronous, so this method returns immediately. 
    [theMovie play]; 
     }

Rückrufwahl:

-(void)myMovieFinishedPreloading:(NSNotification*)aNotification  {
    NSArray *windows = [[UIApplication sharedApplication] windows];

    UIWindow *moviePlayerWindow = nil;
    if ([windows count] > 1) 
    {
        moviePlayerWindow = [[UIApplication sharedApplication] keyWindow];
    }

    CGAffineTransform transform = CGAffineTransformMakeScale(0.5, 0.5);
    transform = CGAffineTransformRotate(transform, -90.0f*M_PI/180.0f);
    [moviePlayerWindow setTransform:transform];

 }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top