UIWebView无法正确加载响应式网页

Dar*_*ren 5 uiwebview ios ios7

我正在尝试将响应式网页加载到UIWebview中,使用我的UIViewController的viewDidLoad方法中的以下代码:

NSURL *url = [NSURL URLWithString:self.webViewURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
Run Code Online (Sandbox Code Playgroud)

它不是根据UIWebView的帧大小加载网页的方式,而是将UIWebView的UIScrollView contentSize设置为一些看似任意的大小(大于我的Web视图框架大小)并加载响应式网页.对于那个大小的框架.

如果我尝试加载我在Safari中使用的网址,它会根据浏览器窗口大小正确重新排列.

我已经尝试将scalesPageToFit属性设置为YES,虽然我实际上并不想缩放页面,但让它的行为与Web视图框架相对应.

有没有人对于发生了什么以及如何解决它有任何想法?

Dar*_*ren 27

我弄清楚发生了什么.我在iPad上的UIWebView宽度小于设备宽度.网页使用设备宽度来确定页面的宽度(此代码位于<head>元素中):

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
Run Code Online (Sandbox Code Playgroud)

我能够使用我在另一个问题中找到的东西解决问题(/sf/answers/917967431/):

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ", (int)webView.frame.size.width]];
}
Run Code Online (Sandbox Code Playgroud)

  • 应该对其他人有用.很高兴你想到了这个! (2认同)

Rav*_*rma 7

您可以通过将UIWebViewproperty 设置scalesPageToFit为TRUE 来实现此目的.

webView.scalesPageToFit = TRUE;

这有助于我使用内部响应式网页UIWebView.