我正在 xcode 中开发一个新应用程序,该应用程序处于纵向 View ,但视频应该能够处于纵向和横向 View 。我编写了这段代码,但它不能 100% 工作
AppDelegate.h
#import <MediaPlayer/MediaPlayer.h>
@property (strong, nonatomic) MPMoviePlayerViewController *VideoPlayer;
AppDelegate.m
@synthesize VideoPlayer;
- (NSUInteger)applicationUIApplication *)application
supportedInterfaceOrientationsForWindowUIWindow *)window {
if ([[self.window.rootViewController presentedViewController]
isKindOfClass:[MPMoviePlayerViewController class]]) {
return UIInterfaceOrientationMaskAllButUpsideDown;
} else {
if ([[self.window.rootViewController presentedViewController]
isKindOfClass:[UINavigationController class]]) {
// look for it inside UINavigationController
UINavigationController *nc = (UINavigationController *)[self.window.rootViewController presentedViewController];
// is at the top?
if ([nc.topViewController isKindOfClass:[MPMoviePlayerViewController class]]) {
return UIInterfaceOrientationMaskAllButUpsideDown;
// or it's presented from the top?
} else if ([[nc.topViewController presentedViewController]
isKindOfClass:[MPMoviePlayerViewController class]]) {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
}
}
return UIInterfaceOrientationMaskPortrait;
}
此代码的问题是,如果用户在以横向模式观看视频时关闭视频播放器,即使我在 Xcode GUI 中禁用它,在关闭视频播放器(应用程序处于横向 View )后,整个应用程序也会变为横向 View ,如果用户将设备旋转到纵向它会切换到纵向 View ,然后它会保持纵向(无论设备旋转)。即使用户在横向模式下观看视频时关闭了视频播放器,如何让该应用切换到纵向 View ?
谢谢!
Best Answer-推荐答案 strong>
经过长时间的研究,我终于找到了解决方案。
1) 为您的应用程序启用所有方向。
2) 子类化你的根导航 Controller ,并实现这 2 个方法
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
3) MPMoviePlayerViewController 的子类
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskAll;
}
4) 现在你应该展示子类的 MoviePlayerController,所有的东西都应该可以工作了!
关于横向 View 中的仅 iOS 视频,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/25959270/
|