ios客户端学习-WKWebView中图片适应屏幕并获取WKWebView高度

这篇博客详细介绍了如何在iOS的WKWebView中实现图片自适应屏幕显示,并通过JavaScript获取网页内容的实际高度。首先,通过设置viewport元标签来适应设备宽度。然后,通过JavaScript动态插入脚本调整图片尺寸,并在页面加载完成后计算并设置WKWebView的高度,确保内容完整显示。此外,还展示了获取页面高度的方法,用于实时更新WKWebView的frame。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WKWebView中图片适应屏幕并获取WKWebView高度

//
//初始化

  • (void)initwebView:(CGRect)frame {
    if (!self.webView) {
    self.webView = [[WKWebView alloc] init];
    //以下代码适配大小
    NSString *jScript = @“var meta = document.createElement(‘meta’); meta.setAttribute(‘name’, ‘viewport’); meta.setAttribute(‘content’, ‘width=device-width’); document.getElementsByTagName(‘head’)[0].appendChild(meta);”;

      WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
      WKUserContentController *wkUController = [[WKUserContentController alloc] init];
      [wkUController addUserScript:wkUScript];
      
      WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init];
      wkWebConfig.userContentController = wkUController;
      
      self.webView = [[WKWebView alloc] initWithFrame:frame configuration:wkWebConfig];
      [self addSubview:self.webView];
      
      _webView.navigationDelegate = self;
    

    }
    }

#pragma mark - WKNavigationDelegate
// 将html中图片适应屏幕

  • (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation {
    NSString *js=@“var script = document.createElement(‘script’);”
    “script.type = ‘text/javascript’;”
    "script.text = “function ResizeImages() { "
    “var myimg,oldwidth;”
    “var maxwidth = %f;”
    “for(i=0;i <document.images.length;i++){”
    “myimg = document.images[i];”
    “if(myimg.width > maxwidth){”
    “oldwidth = myimg.width;”
    “myimg.width = %f;”
    “}”
    “}”
    “}”;”
    “document.getElementsByTagName(‘head’)[0].appendChild(script);”;
    js=[NSString stringWithFormat:js,[UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.width-15];
    [self.webView evaluateJavaScript:js completionHandler:nil];
    [self.webView evaluateJavaScript:@“ResizeImages();” completionHandler:nil];

    __block CGFloat webViewHeight;

    [self.webView evaluateJavaScript:@“document.body.offsetHeight” completionHandler:^(id _Nullable result,NSError * _Nullable error) {
    //获取页面高度,并重置webview的frame
    webViewHeight = [result doubleValue];
    webView.height = webViewHeight;
    [self regetwebviewheight:webViewHeight];
    NSLog(@"%f",webViewHeight);
    }];

    NSLog(@“结束加载”);
    }

// 获取页面优化后实际高度
-(void)regetwebviewheight:(CGFloat)webViewHeight{
[self.webView setFrame:CGRectMake(0, 0, SCREEN_WIDTH, webViewHeight)];
[self.webView evaluateJavaScript:@“document.body.offsetHeight” completionHandler:^(id _Nullable result,NSError * _Nullable error) {
//获取页面高度
CGFloat height = [result doubleValue];
NSLog(@“页面高度height”);
}];
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值