uiwebview在改变横向方向后没有调整大小

时间:2013-09-27 22:55:47

标签: objective-c uiwebview xcode5 orientation landscape

我正在编写一个iPhone应用程序,我在其中UIWebView加载了一个响应式设计的网站。

我遇到的问题是当我将设备旋转到横向时:UIWebView会旋转,但它会保持与纵向模式相同的宽度。

我花了最后5个小时在网上搜索,我发现了一些我用过但没有成功的解决方案......

在我的html页面中我正在使用

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

我尝试使用

<meta name="viewport" content="width=device-width" />

没有任何改变,在我的代码中,我正在实现以下函数来处理旋转,但它什么都没有提供

- (void) didRotateFromInterfaceOrientation: (UIInterfaceOrientation)fromInterfaceOrientation
{
    [self.myWebView stringByEvaluatingJavaScriptFromString:
    [NSString stringWithFormat:
    @"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ",
    (int)self.myWebView.frame.size.width]];

    NSLog(@"orientation width: %d", (int)self.myWebView.frame.size.width);

}

我还检查了“缩放页面以适合”复选框,

(使用xcode 5,带有iphone4s和ios7)

2 个答案:

答案 0 :(得分:28)

尝试在UIWebView上设置约束。当视图旋转时,空间约束应自动调整。

在故事板中,查找右下方的菜单图标。选择自动布局图标(看起来像领带战斗机),然后选择“添加缺失约束”或“重置为建议的约束”。 enter image description here

答案 1 :(得分:11)

最后,这解决了我的问题

- (void)willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
   [self.myWebView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
}