私はいくつかの可変サイズのコンテンツを表示するためにUIWebViewを使用しようとしています。コンテンツのサイズに完全に合わせるためにUIWebViewのサイズを変更できるように、そのコンテンツのフルサイズを決定したいと思います。なぜ[ - UIWebView sizeThatFits:]はdocument.body.offsetHeight/Widthより大きなサイズですか?
コンテンツの正確な高さと幅を特定しようとする試みは、完全に単純ではありませんでした。第一及び第二の結果は、私には理にかなっている間...
- (void)viewDidLoad {
[super viewDidLoad];
self.webView.backgroundColor = [UIColor clearColor];
NSString *content = @"<html><body style='background-color: transparent; width: 300px; height: 500px'><div id='ContentDiv'>Content Here</div></body></html>";
[self.webView loadHTMLString:content baseURL:nil];
debugLog(@"Loading HTML string: %@", content);
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString *bodyHeight = [self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"];
NSString *bodyWidth = [self.webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetWidth"];
NSString *contentHeight = [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('ContentDiv').offsetHeight"];
NSString *contentWidth = [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('ContentDiv').offsetWidth"];
CGSize fittedSize = [self.webView sizeThatFits:CGSizeZero];
debugLog(@"document.body.offsetHeight/Width: {%@, %@}", bodyWidth, bodyHeight);
debugLog(@"document.getElementbyId('ContentDiv').offsetHeight/Width: {%@, %@}", contentWidth, contentHeight);
debugLog(@"sizeThatFits: %@", NSStringFromCGSize(fittedSize));
self.webView.frame = CGRectMake(0,
0,
[contentWidth floatValue],
[contentHeight floatValue]);
}
をサイズを見つけるための試験方法で次の試みは...
Loading HTML string: <html><body style='background-color: transparent; width: 300px; height: 500px'><div id='ContentDiv'>Content Here</div></body></html>
document.body.offsetHeight/Width: {300, 500}
document.getElementbyId('ContentDiv').offsetHeight/Width: {300, 20}
sizeThatFits: {308, 516}
...次のログの結果を生成します - bodyのサイズはstyle属性のサイズと一致し、divのサイズは実際のコンテンツに適合します.3番目の結果は意味をなさない。実際、UIWebViewは、sizeThatFitsによって与えられた適合サイズがJavascriptのボディの高さと一致しないように、いくつかのエッジ(この場合は上、下、左)の8ピクセルで実際のHTMLコンテンツを挿入しているようです幅の結果。
誰もがこれについて説明し、これらのインセットを削除する可能性がありますか?ありがとう。
もちろん、このような簡単な回答 - 迅速な返信に感謝します。 –