【问题标题】:Having a problem making UIWebView autoresize to users orientation使 UIWebView 自动调整到用户方向时出现问题
【发布时间】:2011-08-07 01:44:35
【问题描述】:

我有 UIWebView,当他们使用以下代码旋转设备时,它会根据用户方向自动调整大小:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[self.webView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 

如果用户在查看 webView 时旋转,代码可以正常工作,如果用户在不同的视图(前一个屏幕)中旋转设备然后导航到我的 webView(屏幕),我的 webview 会被切断。我不确定如何根据检测到的方向自动旋转它。我尝试将以下代码放入我的 viewDidLoad 但它似乎不起作用

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

任何建议将不胜感激。

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    有时候,你可能不得不使用方法

     - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
    {
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
        toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        webview.frame=CGRectMake(0, 0, 480, 320);
    }
    else
    {
        webview.frame=CGRectMake(0, 0, 320, 480);
    }
    }
    

    并检查 self.view 和 webview 的 autoresizingMask 属性是否设置为 YES。

    【讨论】:

    • @Mike:让我知道这是否对你有帮助。
    • 嗨 Jeevangs,我尝试了您提供的代码,但没有成功,但是您关于 autoresizingMask 的建议为我指明了正确的方向 >> 我将此代码实现到 viewDidLoad:'webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;'现在可以了。但是我现在遇到的问题是:例如,当我处于横向模式并导航到 webView 时,它现在已正确调整为横向模式,但如果我旋转成纵向,它仍然处于横向模式,这是一张图片:[链接] postimage.org/image/uomxfdz8
    【解决方案2】:

    我发现如果 UIWebView 从呈现为横向的页面开始并切换到纵向,则它会做错事。如果您从纵向开始,然后转到横向,然后再返回纵向,它可以工作吗? (在我的版本中是这样)。

    由于您似乎使用 UIWebView 填充了设备的整个宽度,因此您应该能够使用 HTML 解决此问题。如果这不起作用,那么您可以在 JavaScript 中设置视口,并在应用程序中将其设置为正确的帧大小。但是,通过在<head> 标记内添加以下内容,页面可以正确地从横向切换到纵向:

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

    您也可以设置初始比例或最小/最大,但设置宽度应该足够了。我原以为这是默认设置,但 UIWebView 似乎有一些缓存初始渲染宽度的东西。为了让 UIWebView 更改本机大小,您仍然需要自动调整大小代码。

    【讨论】:

    • 工作就像一个魅力谢谢:
    • 我可以有实际的 javascript 来改变这个吗??
    • 当然,它在另一个问题中的格式正确:stackoverflow.com/questions/6007904/… 但这里是:[webView stringByEvaluatingJavaScriptFromString: [NSString stringWithFormat:@"document.querySelector('meta[name=viewport]')。 setAttribute('content', 'width=%d;', false); ", (int)webView.frame.size.width]];
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多