【问题标题】:How do I know when a UIWebView has exited full screen?我如何知道 UIWebView 何时退出全屏?
【发布时间】:2014-08-20 15:46:49
【问题描述】:

对于一个 iOS 应用,我有一个使用以下 HTML/objc 加载的 Youtube 视频

NSString *embedHTML = @"\
<html><head>\
<style type=\"text/css\">\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
<embed allowScriptAccess=\"always\" id=\"yt\" src=\"%@&enablejsapi=1&playerapiid=yt\" type=\"application/x-shockwave-flash\" \
width=\"262\" height=\"187\"></embed>\
</body></html>";
NSString *html = [NSString stringWithFormat:embedHTML, urlString];
[self.webView loadHTMLString:html baseURL:nil];

加载并播放良好。我遇到的问题是我的应用程序是严格的纵向视图,在应用程序中您无法旋转它。如果您正在观看 youtube 视频,则 webview 会进行覆盖(或类似的操作),允许用户旋转全屏,这很好,但是如果他们在视频上关闭/选择“完成”并在横向关闭时关闭应用程序突然处于横向状态并被严重切断。如何在仍然允许横向播放视频的同时防止这种情况发生?

【问题讨论】:

  • 您是否覆盖了 viewControllers shouldAutorotate 以返回 NO?
  • @katzenhut 这就是诀窍,我希望他们能够在视频期间自动旋转,但是一旦他们将网络视图从全屏缩小到正常大小,应用程序就需要返​​回纵向。
  • 你可能需要继承 uiwebview。让它在它的构造函数中接受一个委托,然后在它完成时回调该委托。在此处阅读委托:developer.apple.com/library/ios/documentation/general/…

标签: ios uiwebview


【解决方案1】:

在您的项目设置中(App Target > General > Deployment Info > Device Orientation),选择 Portrait、Landscape Left 和 Landscape Right。

在你的根视图控制器中,添加:

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

如果所有内容都加载到此视图控制器中,那应该就是您所要做的。如果您发现某些视图在不应该旋转时发生了旋转,请将相同的代码添加到它们的视图控制器中。

全屏视频的控制器将使用目标设置中指定的支持方向,因此将允许旋转为横向。当您关闭视频时,视图将旋转回纵向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多