我在浏览器中嵌入了Youtube视频,这是所有肖像应用程序的一部分。当您启动YouTube视频时,它将在MPAVController中播放并允许在Landscape中旋转。这对我来说不是问题,但问题是如果视频是横向的,我按“OK”关闭视频;我返回浏览器但iPhone状态栏现在处于横向模式,在应用程序顶部留下一个空白区域,以及状态栏覆盖我的应用程序的右侧或左侧部分,具体取决于旋转方向。
我的包含UIWebView的视图控制器被纵向锁定:
- (BOOL) shouldAutorotate
{
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
请注意,使用6.0之前的SDK进行编译时,此问题不存在。
有类似问题的人有解决方案吗?
答案 0 :(得分:5)
我面临同样的问题。以下是我如何解决它:
首先在包含UIWebView的ViewController上注册以接收ExitFullscreenNotification:
- (void)viewDidLoad {
[super viewDidLoad];
// For FullSCreen Exit
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(youTubeVideoExit:)
name:@"UIMoviePlayerControllerDidExitFullscreenNotification"
object:nil];
}
然后,在“退出全屏”处理程序中,强制纵向模式:
- (void)youTubeVideoExit:(id)sender {
[[UIApplication sharedApplication] setStatusBarOrientation:UIDeviceOrientationPortrait animated:NO];
}
当视频以横向模式结束时,用户会看到状态栏一瞬间更改其位置。这可能不是最好的解决方案,但至少可以解决问题。
希望它有所帮助!
答案 1 :(得分:0)
事实证明我的视图嵌入在UINavigationController中,所以我需要在那里处理我的旋转。
我创建了一个类别并将我的轮换代码放在那里
的UINavigationController + Autorotate.m
#import "UINavigationController+Autorotate.h"
@implementation UINavigationController (Autorotate)
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
@end
的UINavigationController + Autorotate.h
#import <UIKit/UIKit.h>
@interface UINavigationController (Autorotate)
- (NSUInteger)supportedInterfaceOrientations;
@end