UIWebView 在旋转时接管屏幕

Posted

技术标签:

【中文标题】UIWebView 在旋转时接管屏幕【英文标题】:UIWebView takes over screen on rotate 【发布时间】:2010-12-20 19:57:55 【问题描述】:

我正在使用 UIWebView 和 UIViewController 创建横幅。在控制器中,我将 shouldAutorotateToInterfaceOrientation 设置为始终返回 YES。在 loadView 中,我创建了我的 UIWebView 并使用 CGRectMake 给它一个小的横幅框架。将其添加到屏幕后,一切正常。屏幕旋转时会出现此问题。 UIWebView 现在接管了整个屏幕。如果我使用 NSLog 输出它的帧,我可以看到它被旋转覆盖以占据整个屏幕。知道如何让它停止这样做吗?我觉得我遗漏了一些基本的东西,但我不知道哪里出了问题。

【问题讨论】:

【参考方案1】:

如果您加载 UIWebview,在旋转时您应该将 UIWebview 的宽度设置为 480,这将在您加载的页面上声明一个 javascript 函数然后在委托上完成

- (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration


    if ((toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
        (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight))
    
            [webView stringByEvaluatingJavaScriptFromString:@"makeWidth(480)"]; 
    else
            [webView stringByEvaluatingJavaScriptFromString:@"makeWidth(320)"]; 
    

注意 makeWidth(480) 是您加载的页面中的一个 javascript 函数,您应该在 webview 中声明该函数并从 xcode 调用它。

【讨论】:

谢谢!我会尽快尝试测试一下。截止日期迫在眉睫,所以可能需要一点时间:-/

以上是关于UIWebView 在旋转时接管屏幕的主要内容,如果未能解决你的问题,请参考以下文章

UIWebView 方向问题

如何获得具有相同屏幕宽度的 Web 视图?

UIWebView 旋转

如何从 Swift 3 中的 UIWebview 中的链接打开另一个视图?

iPhone应用程序主视图不旋转但需要在调用UIWebView时旋转?

如何清除/禁用 UIWebView 的浏览历史记录