2012-03-09 83 views
2

下有沒有什麼在改變5.1會影響如何MPMoviePlayerViewController工程有關設備的方向?MPMoviePlayerViewController不是在橫向方向打5.1

我開始從今天的用戶那裏收到只有在肖像模式下播放視頻的報告。我發現他們正在使用5.1,我很快升級了一個設備來重現這種情況。我的代碼沒有改變,在4.x,5.0和5.01中完美工作。

我的應用程序中的所有視圖都以縱向模式顯示,除非用戶點擊某個視頻時,電影播放器​​應該接管整個屏幕並將其投放到更多環境中。該應用程序使用5.0 SDK但目標爲4.0。下面是我用來顯示視頻的代碼:

VideoPlayer *vp = [[VideoPlayer alloc] initWithContentURL:movieURL]; 
vp.moviePlayer.movieSourceType = src; 
vp.moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
vp.moviePlayer.shouldAutoplay = TRUE; 
[self presentMoviePlayerViewControllerAnimated:vp]; 

的VideoPlayerMPMoviePlayerViewController一個子類,其中shouldAutorotateToInterfaceOrientation被重寫,像這樣:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
return (interfaceOrientation == UIDeviceOrientationLandscapeLeft); 
} 

這種模式建議遍佈互聯網甚至蘋果。我不明白爲什麼它不在iOS 5.1下工作,或者爲什麼更多的人不會抱怨這一點。

任何幫助將不勝感激。

+0

我有同樣的問題,而不是與電影播放器​​,但只是與一個普通的viewcontroller,它顯示它在肖像模式,但shoudlAutorotate方法返回NO肖像模式,如果你有一個解決方案,請張貼它:) – 2012-03-09 12:14:09

+0

我還沒有找到解決方案。糟糕的是,我創建了一個新項目並建立了這個基本模式,並且完美地工作。所以......我在想,它與我在生產應用程序中設置的視圖層次有關。這看起來更像是一個5.1代碼而不是我的代碼,因爲從3.x開始,它已經完美運行了。 – twktue 2012-03-10 20:30:39

回答

1

我在iOS 5中遇到了同樣的問題。我能夠使它工作的唯一方法是繼承MPMoviePlayerViewController。

@implementation MovieViewController 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     return UIInterfaceOrientationIsLandscape(interfaceOrientation); 
    } else { 
     return UIInterfaceOrientationIsPortrait(interfaceOrientation); 
    } 
} 
@end 

看起來你已經嘗試過這樣做,但是這個代碼塊是爲我工作在設備上與iOS 5.1。不確定模擬器。

+0

謝謝。保存我的* ss – Eugene 2012-03-15 13:00:09

+0

我也這樣做了,它工作。 – iveytron 2012-09-19 21:50:38

0

升級到iOS 5.1後,我有一堆方向問題。對我而言,這是因爲允許視圖控制器在鏈上的允許方向導致我添加的模態控制器不允許定向。

在視圖層次結構中有兩個子視圖添加到視圖中是否有任何情況?我在applicationDidFinishLaunching中添加了兩個子視圖到我的窗口,在iOS 5.1之前,他們可以擁有獨立的允許方向。也就是說,我可以在縱向上固定一個,而在頂部旋轉一個。現在,另一個子視圖堅持縱向定位。

我的辦法是強迫低於非旋轉視圖:

[self.window insertSubview:self.nonRotatingViewController.view belowSubview:self.rotatingViewController.view]; 

這篇文章讓我明白這一點(並有一些代碼): iOS: Disable Autorotation for a Subview

2

我有同樣的問題也 - 我是在播放電影上的OpenGL子視圖,(IM使在橫向模式下的互動電子書所以需要我的電影 - (在一個UIView)的景觀發揮也)

我被糾正了這個: 繼承開放glview到*的ViewController那麼*視圖 - 控制連接到窗口

因此,與cocos2d工作,而我現在可以使用所有的UIKit在正確的方向。 發送所有uikit視圖到我的子類opengl視圖。 (同時確保在我的應用程序委託添加和檢查方位的plist陳述過。)

"#if GAME_AUTOROTATION == kGameAutorotationUIViewController 
    [director setDeviceOrientation:kCCDeviceOrientationPortrait]; 
"#else 
    [director setDeviceOrientation:kCCDeviceOrientationLandscapeRight]; 
"#endif 

希望這可以幫助別人:)即時通訊非常新的cocos2d的,因此花了一段時間來弄清楚我是什麼做錯了。