方向更改后UIWebView无法正确呈现

时间:2016-09-27 13:05:16

标签: ios css uiwebview orientation mobile-website

在我的应用程序中有2个UIWebViews。两个都占据整个屏幕,因此一次只能看到1个。 当我看到UIWebView A,并且我旋转iPad时,HTML被正确呈现(包含所有媒体查询和css计算)。但是当我切换到UIWebView B时,HTML标签是512而不是768,导致所有css计算混乱。 我检查了UIWebView B的窗口确实触发了orientationchange事件(刚刚写入控制台时)。似乎视图在不可见或不可见时不呈现。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

隐藏的UIWebView无法正常渲染(例如,如果隐藏,并且会尝试捕获视图的图像),但是一旦显示,页面布局就会被触发,并且应该在该点正确渲染(使用当前帧大小) )。

快速猜测是尝试更改service nginx restart,我将其设置为true,并在您描述的情况下将其设置为WFM。

一个复杂的例子是https://github.com/brave/browser-ios,它隐藏了UIWebViews作为标签(隐藏==不在任何视图层次结构中)。在该应用程序中,可以更改屏幕方向,然后切换到另一个选项卡,使新选择的选项卡添加到根视图层次结构中,以便显示它,并且网页将正确布局。

答案 1 :(得分:0)

结束修复viewWillAppear中的UIWebView大小。从它的超级视图中取出了大小:

UIWebView* webView = (UIWebView*)self.webView;
[webView setFrame:CGRectMake(0, 0, self.view.superview.frame.size.width, self.view.superview.frame.size.height)];