MPMoviePlayerController представление не изменяет размер - PullRequest
2 голосов
/ 22 июня 2011

Я работаю с MPMoviePlayerController, который отображает свой UIView в правильных измерениях на ландшафте, но при повороте на портрет он просто не изменяет размеры.Я думаю, что родительский UIView не изменяет размер.Как мне это настроить?

Я следовал инструкциям, которые @Alex Reynolds упоминает в Маска авторазмера UIView не работает для меня .Это показало мне, что вид изменяется при повороте.У меня все еще есть проблема, что, когда UIView для UIViewController, который содержит плеер, загружен, если ориентация устройства является альбомной, они это отрисовывают в правильный кадр, но если устройство к портрету к тому временион загружен, но не изменен в размерах.С ответом @Alex Reynolds все, что мне нужно сделать, это повернуть устройство один раз, и после этого оно начнет правильно изменять размеры.

Плохо, что с первого раза размер не изменится.Это случалось с кем-то раньше?Если это так, любой вклад очень ценится.

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Правильно ли вы установили маску автоопределения размера view в MPMoviePlayerController? Свойство autoresizesSubviews его суперпредставления установлено на YES? (и также, изменяется ли это суперпредставление при вращении? Мне нравится устанавливать красочные цвета фона для моих представлений во время тестирования, чтобы убедиться, что они корректно изменяют размеры при автоповороте.)

Если после проверки этих свойств он все еще не работает, вы всегда можете вручную установить свойство frame просмотра видеоплеера. Метод super view layoutSubviews, как правило, является лучшим местом для этого, но если это не представление, которое вы подклассировали вручную, вы также можете сделать это в контроллере представления.

1 голос
/ 25 марта 2014
- (void)viewDidLoad
{
[super viewDidLoad];
[self play];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];

}
-(IBAction)dismiss:(id)sender
{
//[self.view removeFromSuperview];

_moviePlayer =nil;

[self dismissViewControllerAnimated:YES completion:nil];
}
// Do any additional setup after loading the view from its nib.
-(void)play
 {

     NSURL *url = [NSURL URLWithString:@"stringurlvideo"];
    _moviePlayer =  [[MPMoviePlayerController alloc]initWithContentURL:url];
  // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:)
      //      name:MPMoviePlayerPlaybackDidFinishNotification
  //                                             object:_moviePlayer];
   // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFull:)
                                         //        name:MPMoviePlayerDidEnterFullscreenNotification
                                         //      object:_moviePlayer];
   // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidExit:)
                                          //       name:MPMoviePlayerDidExitFullscreenNotification
                                          //     object:_moviePlayer];
    _moviePlayer.controlStyle = MPMovieControlStyleDefault;
    _moviePlayer.shouldAutoplay = YES;
if([[UIScreen mainScreen] bounds].size.height==568)
  {

    [_moviePlayer.view setFrame:CGRectMake(0,200, 320, 200)];
  }
else
   {
     [_moviePlayer.view setFrame:CGRectMake(0,150, 320, 200)];

   }
    [self.view addSubview:_moviePlayer.view];
    //[_moviePlayer.view setCenter:self.view.center];
    [_moviePlayer setFullscreen:YES animated:YES];

    }
 - (void) moviePlayBackDidFull:(NSNotification*)notification
    {


    }
 -(void)moviePlayBackDidExit:(NSNotification*)notification 
 {
////[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];




 }
 -(void)viewWillAppear:(BOOL)animated
   {
 /*   if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait)
   {
      [_moviePlayer.view setFrame:CGRectMake(0,200, 320, 200)];
    CGRect rect=[bar frame];
    rect.size.width=self.view.frame.size.width;
    [bar setFrame:rect];

   }
  else
   {

    CGRect rect=[bar frame];
    rect.size.width=480;
    [bar setFrame:rect];
    [_moviePlayer.view setFrame:CGRectMake(0,44, 480, 320-44)];

  }*/

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

    if ([player
         respondsToSelector:@selector(setFullscreen:animated:)])
     {
        [player.view removeFromSuperview];
     }
     }

 - (void)didReceiveMemoryWarning
    {
   [super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
   }


  -(NSUInteger)supportedInterfaceOrientations
  {
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
   }


 - (BOOL)shouldAutorotate
 {
 return YES;
  }
  /*- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
 {
return UIInterfaceOrientationLandscapeLeft;
 }*/
   - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation    duration:(NSTimeInterval)duration
    {
if(toInterfaceOrientation==UIInterfaceOrientationPortrait && toInterfaceOrientation!=UIInterfaceOrientationPortraitUpsideDown )
    {

    if([[UIScreen mainScreen] bounds].size.height==568)
    {

    [_moviePlayer.view setFrame:CGRectMake(0,200, 320, 200)];
    }
    else
    {
        [_moviePlayer.view setFrame:CGRectMake(0,150, 320, 200)];

    }
    CGRect rect=[bar frame];
    rect.size.width=self.view.frame.size.width;
    [bar setFrame:rect];
    }
  else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation ==UIInterfaceOrientationLandscapeRight)
    {
    CGRect rect=[bar frame];
    if([[UIScreen mainScreen] bounds].size.height==568)
    {
    rect.size.width=568;
    }
    else{
        rect.size.width=480;

    }
    [bar setFrame:rect];
    [_moviePlayer.view setFrame:CGRectMake(0,44, rect.size.width, 320-44)];
      }
      }
   - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
      {
  /*  if(fromInterfaceOrientation==UIInterfaceOrientationPortrait && fromInterfaceOrientation!=UIInterfaceOrientationPortraitUpsideDown )
      {
      CGRect rect=[bar frame];
    rect.size.width=568;
    [bar setFrame:rect];
    [_moviePlayer.view setFrame:CGRectMake(0,44, 480, 320-44)];
    }
   else
    {
    [_moviePlayer.view setFrame:CGRectMake(0,200, 320, 200)];
    CGRect rect=[bar frame];
    rect.size.width=self.view.frame.size.width;
    [bar setFrame:rect];
    }*/
   }
    - (void)didRotate:(NSNotification *)notification
     {
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIInterfaceOrientationLandscapeLeft || orientation     ==UIInterfaceOrientationLandscapeRight)
    {
    CGRect rect=[bar frame];
    if([[UIScreen mainScreen] bounds].size.height==568)
    {
        rect.size.width=568;
    }
    else{
        rect.size.width=480;

    }
    [bar setFrame:rect];
    [_moviePlayer.view setFrame:CGRectMake(0,44, rect.size.width, 320-44)];

  }
else if(orientation==UIInterfaceOrientationMaskPortrait && orientation!=UIDeviceOrientationPortraitUpsideDown)
   {
    if([[UIScreen mainScreen] bounds].size.height==568)
    {
    [_moviePlayer.view setFrame:CGRectMake(0,200, 320, 200)];
    }
    else
    {
        [_moviePlayer.view setFrame:CGRectMake(0,150, 320, 200)];

    }
    CGRect rect=[bar frame];
    rect.size.width=self.view.frame.size.width;
    [bar setFrame:rect];

   }
 }
...