WKWebViewでコンテンツサイズの取得をしたかった。
画面描画が終了すると webView: didFinishNavigation: が実行されるらしい。なので、コンテンツサイズ取得はそこで行う。
コンテンツサイズの取得は、javascriptを実行させることで取得できるみたいです。
javascriptを実行させる
下記でjavascriptを実行できるようです。
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^)(id, NSError *error))completionHandler;
コンテンツサイズを取得するjavascriptは下記で大丈夫だと思います。
document.documentElement.offsetWidth //横幅
document.documentElement.offsetHeight //縦幅
試してみた
evaluateJavaScript: completionHandler: を2回実行しているのは微妙な感じですが、取り敢えずこんな感じで。
// 画面描画終了後 webView: didFinishNavigation: が呼び出される
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
// 横幅取得
[self evaluateJavaScript:@"document.documentElement.offsetWidth" completionHandler:^(id documentWidth, NSError *error){
CGFloat width = [documentWidth floatValue];
// 縦幅取得
[self.webView evaluateJavaScript:@"document.documentElement.offsetHeight" completionHandler:^(id documentHeight, NSError *error){
CGFloat height = [documentHeight floatValue];
// ↓以降で取得した幅で何かを行う↓
}];
}];
}