MediaPlayer MPMoviePlayerController - не воспроизводит видео в альбомной ориентации - PullRequest
2 голосов
/ 26 февраля 2012

Действительно надеясь, что кто-то может помочь, я могу воспроизвести мои видео, нажав на кнопку, но они всегда воспроизводятся в портретном режиме, я действительно хочу, чтобы они воспроизводились в полноэкранном режиме.

Воткод, который я использую здесь, я добавил некоторый код отсюда, который кто-то сказал, исправил его в своем случае, но, несомненно, испортил синтаксис каким-то образом.

Пожалуйста, кто-то избавит меня от моих страданий и скажите мнекакая очевидная вещь, которую я сделал неправильно.

#import "SecondViewController.h"


@implementation SecondViewController


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"BG.png"]];
}

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:  (UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
//return (interfaceOrientation == UIInterfaceOrientationPortrait);
return YES;
}

-(IBAction)playMovie:(id)sender
{
NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"Allerjen Exclusive" ofType:@"mp4"];
NSURL    *fileURL    =   [NSURL fileURLWithPath:filepath];
MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc]   initWithContentURL:fileURL];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlaybackComplete:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:moviePlayerController];

[self.view addSubview:moviePlayerController.view];
moviePlayerController.fullscreen = YES;

UIView * playerView = [moviePlayerController view];
[playerView setFrame: CGRectMake(0, 0, 480, 320)];

CGAffineTransform landscapeTransform;
landscapeTransform = CGAffineTransformMakeRotation(90*M_PI/180.0f);
landscapeTransform = CGAffineTransformTranslate(landscapeTransform, 80, 80);

[playerView setTransform: landscapeTransform];

moviePlayerController.fullscreen = TRUE;
moviePlayerController.controlStyle = MPMovieControlStyleFullscreen;

[moviePlayerController play];


}

- (void)moviePlaybackComplete:(NSNotification *)notification
{
MPMoviePlayerController *moviePlayerController = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:MPMoviePlayerPlaybackDidFinishNotification
                                              object:moviePlayerController];

[moviePlayerController.view removeFromSuperview];
[moviePlayerController release];
}


@end

Ответы [ 2 ]

0 голосов
/ 10 октября 2014

Используйте MPMoviePlayerViewController вместо MPMoviePlayerController.Он будет обрабатывать ориентацию, стиль управления и т. Д. Я сослался https://stackoverflow.com/a/4911172/3346048 на то же самое.

MPMoviePlayerViewController *playerView = [[[MPMoviePlayerViewController alloc] initWithContentURL:videoURL] autorelease];
[self presentMoviePlayerViewControllerAnimated:playerView];

и в AppDelegate.m объявил следующую функцию.Это ограничит ориентацию на портрет во всех случаях и изменится только при воспроизведении видео

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window

{if ([[self.window.rootViewController представилViewController] isKindOfClass: [MPMoviePlayerViewController class]])UIInterfaceOrientationMaskAll;} else {// NSLog (@ "ориентация должна измениться");return UIInterfaceOrientationMaskPortrait;}

}

0 голосов
/ 05 апреля 2012

Я думаю, что вам нужно изменить рамку представления moviePlayer при изменении ориентации, Используйте следующую функцию:

 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
/* Size movie view to fit parent view. */
CGRect viewInsetRect = CGRectInset ([self.view bounds],20,20);
[[[self moviePlayerController] view] setFrame:viewInsetRect];

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...