Video im Bildschirm benutzerdefinierter Größe abspielen - Anzeigen im iPhone anzeigen
-
07-07-2019 - |
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?
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];
}