如何在UIModalPresentationFormSheet中调整UIWebView的大小?

时间:2013-04-05 05:40:40

标签: ios ipad webview formview

我尝试了人类已知的每一种排列,我无法在iPad的模态表单视图中正确地调整UIWebView的大小。该网页仍然显示完整的iPad纵向宽度768点。

我在哪里以及如何告诉UIWebView显示宽度为540点?

我认为'scalesPageToFit'应该这样做,但它不起作用。

我尝试将网页视图设置为表单视图的大小,即带有导航和状态栏的540 x 576。高度无关紧要。

我尝试将UIWebView添加到故事板中的UIView,并调整所有大小。然后我删除了UIWebView并以编程方式添加它。

- (void)viewDidLoad
{
    [super viewDidLoad];

    CGRect aFrame = self.view.frame;

    if (IS_IPAD)
    {
        aFrame = CGRectMake(0, 0, FORM_VIEW_WIDTH, FORM_VIEW_HEIGHT);
    }

    _webView = [[UIWebView alloc] initWithFrame:aFrame];
    [_webView setOpaque:NO];
    [_webView setDelegate:self];
    [_webView setScalesPageToFit:YES];

    self.view = _webView;
    ...
}

我也尝试在viewDidAppear中加载(除了viewDidLoad,viewWillAppear等)。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [[self webView] setFrame:CGRectMake(0, 0, FORM_VIEW_WIDTH, FORM_VIEW_HEIGHT)];
    [[self webView] setScalesPageToFit:YES];

    NSURL *webURL = [NSURL URLWithString:@"http://www.google.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:webURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0f];
    [[self webView] loadRequest:request];
}

任何建议表示赞赏。

enter image description here

1 个答案:

答案 0 :(得分:3)

这一直在发生在我身上。我发了一个冗长的问题,然后两秒钟后我找到了答案。

无论如何,有人在这里发布了这个问题的解决方案: UIWebView -- load external website, programmatically set initial zoom scale, and allow user to zoom afterwards

但是,我更改了脚本以将宽度设置为iPad宽度:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString* js =
    @"var meta = document.createElement('meta'); "
    @"meta.setAttribute( 'name', 'viewport' ); "
    @"meta.setAttribute( 'content', 'width = 540px, initial-scale = 1.0, user-scalable = yes' ); "
    @"document.getElementsByTagName('head')[0].appendChild(meta)";

   [[self webView] stringByEvaluatingJavaScriptFromString: js];
}

注意部分'width = 540px,initial-scale = 1.0,user-scalable = yes'

我将宽度更改为表格宽度并缩放为1.0。

我还需要处理iPhone,所以我会对下一步进行调整。我认为只有iPad表单视图才需要修复此问题。

更新:答案是短暂的。如果我加载任何其他页面,则会再次抛出尺寸。回到原点。

解决方案:此视图只需访问我开发的几个网页。因此,我通过向每个网页添加元标记来更新我需要访问的几个网页。我只需要访问这些页面,所以这是我计划使用的解决方案。这意味着我需要以某种方式将视口宽度设置为仅适用于iPad的540px。我接下来会想到这一点。

<meta name="viewport" content="width:540, initial-scale=1, maximum-scale=1">