Objective c 将方向更改为横向后uiwebview未调整大小

Objective c 将方向更改为横向后uiwebview未调整大小,objective-c,uiwebview,xcode5,orientation,landscape,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-sca

我正在编写一个iPhone应用程序,其中有一个
UIWebView
,可以加载一个具有响应性设计的网站

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

我花了5个小时在网上搜索,我找到了一些我用过但没有成功的解决方案

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

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
我还选中了“调整页面大小”复选框


(使用xcode 5,搭配iphone4s和ios7)

最后,这解决了我的问题

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

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

在情节提要中,查找右下角的菜单图标。选择自动布局图标(看起来像一个平手),然后选择“添加缺少的约束”或“重置为建议的约束”。

在IOS设备上非常有效(“添加缺少的约束”)。模拟器也会旋转,但似乎有点困惑(四次旋转中只有三次有效)。对我来说,不需要使用Objective C。我不知道为什么,但在General Deployment Info页面或project plist中指定“颠倒”似乎不起作用。我总是将此方法添加到我的主视图控制器以解决该问题,并确保支持所有其他方向:
-(NSUInteger)supportedinterfaceorients{return(UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);}
由于iPhone不允许用户在横向模式下锁定方向,纵向倒置模式可以实现这一功能。但是,在iPad上,您可能会发现纵向倒置模式实际上可以按预期工作。建议您只需遵循这些默认值,除非您有特定的用例来证明不同的功能。+1谢谢,这是一个正确的答案,如果你是通过编程来实现的。
- (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);

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