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 在旋转时接管屏幕的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Swift 3 中的 UIWebview 中的链接打开另一个视图?