2013-06-18 3 views
3

У меня есть видео на моем приложении. Некоторые используют MPMoviePlayerController, другие - в UIWebView с YouTube. Я хочу, чтобы мое приложение было полностью портретировано. Тем не менее, я хочу дать пользователю возможность переключиться на пейзаж, когда есть видео (не сила, но необязательная).iOS - Разрешить только ландшафтный режим только для видео

Я искал в Интернете ответ, но пока ничего не нашел.

Благодарим за помощь!

+0

, если ваше приложение пейзаж, то просто сделать: [т.пл. shouldAutorotateToInterfaceOrientation: NO]; – Jatin

+0

см. Ответ здесь: http://stackoverflow.com/a/14802980/542400 – AMayes

+0

Вы используете rootViewController в своем приложении? – Madhu

ответ

7

Я была такая же проблема, и установил ее, добавив это в моем приложении делегатом, в основном позволяет Пейзажная ориентации только на подклассах MPMoviePlayerViewController:

#import <MediaPlayer/MediaPlayer.h> 

@implementation UIViewController (orientationFix) 

-(NSUInteger) supportedInterfaceOrientations 
{ 
    if ([[self class] isSubclassOfClass:[MPMoviePlayerViewController class]]) { 
     return UIInterfaceOrientationMaskLandscape; 
    } 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    if ([[self class] isSubclassOfClass:[MPMoviePlayerViewController class]]) { 
     return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight; 
    } 
    return UIInterfaceOrientationPortrait; 
} 

@end 

@implementation MyAppDelegate 
. 
. 
. 
@end 
+0

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

+0

не работает для меня ... :( – Simmy

+0

@VanDuTran hi! Вы нашли решение для этого, пожалуйста? Я также использую YTPlayerView. А также работал ли звук YTPlayer для вас в реальном устройстве? –

0

добавить эти строки в AppDelegate.

- (BOOL) shouldAutorotate { return NO; }

-(NSUInteger)supportedInterfaceOrientations 
{ 
    //LandScapeMode:- UIInterfaceOrientationMaskLandscape; 
    //PortraitMode:- 
    return UIInterfaceOrientationMaskPortrait 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    //LandScapeMode:- UIInterfaceOrientationLandscapeRight; 
    // ProtraitMode:- 
    return UIInterfaceOrientationPortrait 
} 
0

Добавить это приложение делегата. не

-(BOOL)shouldAutorotate 
    { 
     return NO; 
    } 

-(NSUInteger)supportedInterfaceOrientations 
{ 
    //LandScapeMode:- UIInterfaceOrientationMaskLandscape; 
    //PortraitMode:- 
    return UIInterfaceOrientationMaskPortrait 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    //LandScapeMode:- UIInterfaceOrientationLandscapeRight; 
    // ProtraitMode:- 
    return UIInterfaceOrientationPortrait 
} 
0
self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:theurl]; 
self.moviePlayer.controlStyle = MPMovieControlStyleFullscreen; 
self.moviePlayer.controlStyle = MPMovieControlStyleNone; 
self.moviePlayer.view.transform = CGAffineTransformConcat(self.moviePlayer.view.transform, CGAffineTransformMakeRotation(M_PI_2)); 
UIWindow *backgroundWindow = [[UIApplication sharedApplication] keyWindow]; 
[self.moviePlayer.view setFrame:backgroundWindow.frame]; 
[backgroundWindow addSubview:self.moviePlayer.view]; 
[self.moviePlayer play]; 
Смежные вопросы