2011-06-22 47 views
2

我正在使用一個MPMoviePlayerController,它將UIView呈現在橫向上的正確尺寸,但是當旋轉到縱向時,它不會調整大小。我認爲它的父母UIView是一個不調整大小。我如何設置?MPMoviePlayerController視圖不調整大小

我遵循@Alex Reynolds在UIView autoresizingmask not working for me中提到的說明。這顯示了視圖在旋轉時調整大小。我仍然遇到如下問題:當加載播放器的UIViewControllerUIView被加載時,如果設備的方向爲橫向,則它會呈現給右邊的框架,但是如果設備在加載時顯示在縱向上,沒有調整它的大小。利用@Alex Reynolds的答案,我所要做的就是旋轉設備一次,然後開始調整大小。

它仍然不好,它不會第一次調整大小。這之前是否發生過這種情況?如果是這樣,任何輸入是不勝感激。

回答

2

您是否已經適當地設置了MPMoviePlayerController的view的autoresizingMask?它的超級觀點autoresizesSubviews屬性設置爲YES? (同樣,這個superview在旋轉時是否也調整大小?我喜歡在測試過程中爲我的視圖設置多彩背景顏色,以驗證它們在自動旋轉時正確調整大小。)

如果在檢查這些屬性後仍然無法工作,請始終手動設置電影播放器​​視圖的frame屬性。超級視圖的layoutSubviews方法通常是最好的方法,但如果它不是您手動分類的視圖,您也可以在視圖控制器中執行此操作。

+0

我相信我確實有autoresizingMask設置正確。我有self.player.view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin。我已經爲該問題添加了更多信息。 –

1
- (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]; 

    } 
}