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

Ios 如何在UIModalPresentationFormSheet中调整UIWebView的大小?,ios,ipad,webview,formview,Ios,Ipad,Webview,Formview,我尝试了人类已知的每一种排列方式,但我无法在iPad的模式视图中获得适当大小的UIWebView。该网页仍然显示768点的完整iPad肖像宽度 在何处以及如何告知UIWebView显示宽度540点 我以为“scalesPageToFit”应该可以做到这一点,但它不起作用 我尝试将web视图设置为表单视图的大小,即540 x 576,带有导航和状态栏。不过身高是无关紧要的 我尝试将UIWebView添加到故事板中的UIView,并设置了所有大小。然后我删除了UIWebView并以编程方式添加了它

我尝试了人类已知的每一种排列方式,但我无法在iPad的模式视图中获得适当大小的UIWebView。该网页仍然显示768点的完整iPad肖像宽度

在何处以及如何告知UIWebView显示宽度540点

我以为“scalesPageToFit”应该可以做到这一点,但它不起作用

我尝试将web视图设置为表单视图的大小,即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;
    ...
}
我还尝试在viewDidLoad中加载(除了viewDidLoad、ViewWillDisplay等)

欢迎提出任何建议


这件事一直发生在我身上。我提出了一个很长的问题,两秒钟后我找到了答案

无论如何,有人在这里发布了一个解决此问题的方法:

但是,我修改了脚本,将宽度设置为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];
}
请注意“宽度=540px,初始比例=1.0,用户可缩放=是”部分

我将宽度更改为表单宽度,并将比例更改为1.0

我还需要处理iPhone,因此我将在下一步对此进行调整。我认为这个补丁可能只适用于iPad表单视图

更新:答案是短暂的。如果我加载任何其他页面,大小将再次被取消。回到原点

解决方案:这个视图只需要访问我开发的几个网页。因此,我通过向每个页面添加meta标记来更新我需要访问的几个web页面。我只需要访问这些页面,所以这是我计划使用的解决方案。这意味着我只需要将iPad的视口宽度设置为540px。我下一步会弄清楚的

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


我目前的实现是,我编写了一个python脚本,从源页面解析并生成目标页面,如help_ipad.html,这些页面可以在ipad的表单视图中访问。值得注意的一点是:如果在旋转应用程序时未清除我发现的视口,则会丢失应用的属性。您可以通过首先运行以下脚本来清除视口:[webView stringByEvaluatingJavaScriptFromString:@“$('meta[name=viewport]”)。删除();“];
<meta name="viewport" content="width:540, initial-scale=1, maximum-scale=1">