WKWebView HTML 로드, 화면 적응 문제

2461 단어
전자상거래 프로젝트, 상품의 상세한 상황을 만들 때.제품 소개는 백엔드의 html 코드를 얻어 표시합니다.그러면 html 코드의 사이즈는 우리 핸드폰의 사이즈와 다를 것이다. 그러면 이럴 때 스크린의 적응을 해야 한다.
첫 번째 방법: 안의 너비 값을 직접 바꾸지만 이 방법은 폐단이 있다.만일 백그라운드에서 우리에게 준 html 코드의 폭이 변할 수 있다면 이것은 쓸모가 없다
 // html  
   NSString *heder = @"html  ";
  //   html       
  NSString *htmlString = [heder stringByReplacingOccurrencesOfString:@"300" withString:[NSString stringWithFormat:@"%.f",    ]];
   [self.webView loadHTMLString:heder baseURL:nil];

두 번째 방법.이 방법은 내가 인터넷에서 찾았지만 약간의 변경을 했다.다른 사람을 속이는 코드를 스스로 해결했다고 해도 아무런 효과가 없다.(제가 직접 테스트해 봤는데 효과가 없어요. 많은 동포들이 똑같은지 모르겠어요.그럼 어떡하지? 사실은 간단해. 바로 js 코드를 바꾸는 거야.width=device-width를 width=100%로 바꾸면 되겠네요.그래서 js 코드를 못 알아보는 것도 힘들어요.
- (WKWebView *)webView {
    if (!_webView) {
        _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;
        
        _webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:wkWebConfig];
        [self.view addSubview:_webView];
        _webView.navigationDelegate = self;
    }
    return _webView;

그렇다면 고도에 적응하려면 먼저 대리에 따라야 한다
 _webView.navigationDelegate = self;

그리고 그의 대리 방법을 집행한다
#pragma mark —— WKNavigationDelegate
-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
    [webView evaluateJavaScript:@"document.body.scrollHeight;" completionHandler:^(id _Nullable any, NSError * _Nullable error) {
           NSString *heightStr = [NSString stringWithFormat:@"%@",any];
           [self.webView setHeight:heightStr.intValue];
          [self.tableView reloadData];
    }];
}

       
https://www.jianshu.com/p/20cea397cd11

좋은 웹페이지 즐겨찾기