電商項目绘盟,在做商品詳情的時候。關(guān)于產(chǎn)品介紹悯仙,是通過得到后臺的html代碼進行顯示龄毡。那么html代碼的尺寸和我們手機的尺寸會不一樣,那么這個時候就要做屏幕的自適應锡垄。
第一種方法:直接替換里面的寬度值沦零,但是這個方法有弊端。萬一后臺給我們的html代碼寬度是可變的呢货岭,那這就不管用呢
// html加載
NSString *heder = @"html代碼";
// 改變html的寬度讓自適應
NSString *htmlString = [heder stringByReplacingOccurrencesOfString:@"300" withString:[NSString stringWithFormat:@"%.f",屏幕寬度]];
[self.webView loadHTMLString:heder baseURL:nil];
第二種方法路操。這個方法是我從網(wǎng)上找到的,但做了一點改動千贯。也可以說自己解決了一個坑
別人的代碼屯仗,這么運行沒有什么效果。(我自己測試是沒有效果搔谴,不知道廣大同胞是不是同樣)魁袜。那么怎么辦呢,其實很簡單,那就是改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;
然后執(zhí)行他的代理方法
#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];
}];
}
或者試用此方法
http://www.reibang.com/p/20cea397cd11