UIWebView中电影播放器​​的旋转和外观

时间:2012-12-20 21:30:32

标签: iphone objective-c cocoa-touch uiwebview uiappearance

我的应用程序仅支持纵向方向,但我有网页视图,其中我显示YouTube视频,当这个视频全屏播放时,我希望播放器能够进入风景画。我如何才支持视频的横向广告?

此外,我使用外观API在整个应用程序中设置导航栏的样式和栏按钮项。这也适用于电影播放器​​。如何在应用程序的其他部分仍使用外观API时如何使用影片播放器的默认布局?

1 个答案:

答案 0 :(得分:5)

我设法解决了这两个问题。

对于旋转,请在目标摘要中启用横向方向。

enter image description here

然后将以下行添加到视图控制器。它应该足以将其添加到最顶层的控制器。例如,如果整个应用程序在导航控制器中运行,则可以对导航控制器进行子类化。

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

- (BOOL)shouldAutorotate
{
    return NO;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}

从技术上讲,我认为让shouldAutorotate返回NO就足够了,因为它不会在iOS 6上轮换,如果你没有实现shouldAutorotateToInterfaceOrientation:,我相信它对于iOS 5,默认为上述。我还是喜欢将它包括在内。

这将确保您的应用仅以纵向工作,但这不会对MPAVController(UIWebView用于显示视频)产生任何影响,因此它将正确旋转。

为避免在MPAVController上设置外观,我将调用更改为外观API,例如:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"MyBackgroundImage.png"] forBarMetrics:UIBarMetricsDefault];

[[UINavigationBar appearanceWhenContainedIn:[UINavigationController class], nil] setBackgroundImage:[UIImage imageNamed:@"NavigationBar_Background.png"] forBarMetrics:UIBarMetricsDefault];

因此,只有导航栏包含在导航控制器中时才会设置背景,导航控制器不在MPAVController中。