2012-04-23 2 views
1

после долгого дня изучения того, почему 1024x768 видео не будет работать на iPad 3, и много охоты на форум. Я не мог найти разумных решений этой проблемы. Кажется, много людей, которые имеют такую ​​же ситуацию, когда отображается только черный экран.1024x768 на ipad с использованием MPMoviePlayerController

Решение должно было отображать видеоролик, требуемый как 1024x748. Причина того, что строка состояния, показанная в верхней части iPad, составляет 20 пикселей.

Надеюсь, это решает много проблем пользователей, которые возникают с этой ситуацией.

Onto мой следующий вопрос ....

Я в настоящее время видео, встроенный в мой взгляд, через MPMoviePlayerController. Это видео находится в постоянном цикле (анимированное меню). Затем у меня есть три невидимые кнопки, расположенные поверх видео, к которому вызывается метод. У меня есть только один, работающий в настоящее время, а два других - только оповещения.

Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что при нажатии кнопки я хочу другое видео для воспроизведения. Это работает отлично, НО мне хотелось бы, чтобы первое видео с FIRST играло до конца, чтобы перейти к воспроизведению следующего видео, потому что я тоже нуждаюсь в этом, и я не хочу быть уверенным в том, что он идет от одного видео к другому.

Любая обратная связь по этому вопросу было бы здорово ....

#import "MainViewController.h" 
#import "VideoPlayerViewController.h" 
#import <MediaPlayer/MediaPlayer.h> 
#import <UIKit/UIKit.h> 

@interface MainViewController() 

@property (nonatomic, retain) MPMoviePlayerController *playerViewController; 
@property (nonatomic, retain) VideoPlayerViewController *myPlayerViewController; 

@end 


@implementation MainViewController 

@synthesize playerViewController = _playerViewController; 
@synthesize myPlayerViewController = _myPlayerViewController; 

- (void)dealloc { 
    self.playerViewController = nil; 
    self.myPlayerViewController = nil; 

    [super dealloc]; 
} 


#pragma mark - View lifecycle 

-(void)buttonEventOne:(id)sender { 

    //[[[[UIAlertView alloc] initWithTitle:@"CONTENT ONE" message:@"This will link to content one video" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show]; 


    NSURL *urlTwo = [[NSBundle mainBundle] URLForResource:@"BAE_BG_anim_pt2_748" withExtension:@"mov"]; 
    MPMoviePlayerController *playerViewController = [[MPMoviePlayerController alloc] init]; 

    playerViewController.contentURL = urlTwo; 
    playerViewController.view.frame = CGRectMake(0, 0, 1024, 768); 
    playerViewController.controlStyle = MPMovieControlStyleNone; 
    //playerViewController.repeatMode = MPMovieRepeatModeOne; 

    [self.view addSubview:playerViewController.view]; 
    [playerViewController play]; 

    self.playerViewController = playerViewController; 
    [playerViewController release]; 


} 

-(void)buttonEventTwo:(id)sender { 

    [[[[UIAlertView alloc] initWithTitle:@"CONTENT TWO" message:@"This will link to content one video" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show]; 
} 

-(void)buttonEventThree:(id)sender { 

    [[[[UIAlertView alloc] initWithTitle:@"CONTENT THREE" message:@"This will link to content one video" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show]; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"BAE_Main_Loop_748" withExtension:@"mov"]; 

    // video player 
    MPMoviePlayerController *playerViewController = [[MPMoviePlayerController alloc] init]; 
    playerViewController.contentURL = url; 
    [playerViewController prepareToPlay]; 
    playerViewController.view.frame = CGRectMake(0, 0, 1024, 768); 
    playerViewController.controlStyle = MPMovieControlStyleNone; 
    playerViewController.repeatMode = MPMovieRepeatModeOne; 

    [self.view addSubview:playerViewController.view]; 
    [playerViewController play]; 

    self.playerViewController = playerViewController; 
    [playerViewController release]; 

    UIButton * btnOne = [UIButton buttonWithType:UIButtonTypeCustom]; 
    btnOne.frame = CGRectMake(260, 350, 150, 50); 
    [btnOne setTitle:@"" forState:UIControlStateNormal]; 
    [btnOne addTarget:self action:@selector(buttonEventOne:)forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:btnOne]; 

    UIButton * btnTwo = [UIButton buttonWithType:UIButtonTypeCustom]; 
    btnTwo.frame = CGRectMake(620, 350, 150, 50); 
    [btnTwo setTitle:@"" forState:UIControlStateNormal]; 
    [btnTwo addTarget:self action:@selector(buttonEventTwo:)forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:btnTwo]; 

    UIButton * btnThree = [UIButton buttonWithType:UIButtonTypeCustom]; 
    btnThree.frame = CGRectMake(450, 250, 150, 50); 
    [btnThree setTitle:@"" forState:UIControlStateNormal]; 
    [btnThree addTarget:self action:@selector(buttonEventThree:)forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:btnThree]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
      interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 
@end 
+0

Возможно, вы захотите принять некоторые ответы, которые люди отправили на предыдущие вопросы, щелкнув контур «тика» ответа, который решил вашу проблему. – Diziet

+0

ah awesome Я не знал, что вы можете это сделать! – WLyne86

+0

Это место замечательно, кажется, что люди готовы помочь или протянуть руку, я надеюсь, что проблема, с которой я столкнулся, решила много проблем людей с этим черным экраном. – WLyne86

ответ

0

Вы пробовали регистрации уведомлений воспроизведения, в частности, в MPMoviePlayerPlaybackDidFinishNotification, броским да? Если вы регистрируетесь для уведомления, когда кнопка попала:

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(introMovieFinished:) 
    name:MPMoviePlayerPlaybackDidFinishNotification 
    object:self.playerViewController]; 

Тогда в этой функции:

- (void)introMovieFinished:(NSNotification*)note { 
    [[NSNotificationCenter defaultCenter] 
    removeObserver:self 
    name:MPMoviePlayerPlaybackDidFinishNotification 
    object:self.playerViewController]; 
    // Do stuff. 
} 

Вы дерегистрировать свой интерес в уведомлениях, а затем начать воспроизведение следующего фильма. Поскольку вы регистрируете интерес только при нажатии кнопки, вы не должны получать вызов функции до тех пор, пока фильм не закончится.

+0

плохо дайте этому помощнику, я был на нем сегодня, пытаясь найти решение для этого. Я закончил настройку переменной BOOL, которая была установлена ​​на YES на кнопке. Затем я также настроил таймер, который выглядит, если эта переменная == YES. Когда это будет == YES, он устанавливает режим повторения в MPMovieRepeatModeNone. Как только видео затем вынимается из цикла, таймер затем смотрит, будет ли currentPlaybackTime видео равно == длительности воспроизведения. – WLyne86

Смежные вопросы