我正在编写一个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)
答案 0 :(得分:28)
尝试在UIWebView上设置约束。当视图旋转时,空间约束应自动调整。
在故事板中,查找右下方的菜单图标。选择自动布局图标(看起来像领带战斗机),然后选择“添加缺失约束”或“重置为建议的约束”。
答案 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)];
}