Sto tentando di utilizzare un UIWebView per visualizzare alcuni contenuti di dimensioni variabili e mi piacerebbe determinare l'intera dimensione di quel contenuto in modo da poter ridimensionare UIWebView in modo che si adatti perfettamente alle dimensioni del contenuto.Perché - [UIWebView sizeThatFits:] fornisce una dimensione maggiore rispetto a document.body.offsetHeight/Width?
I miei tentativi di determinare l'altezza e la larghezza corrette del contenuto, tuttavia, non sono stati completamente semplici. Il seguente tentativo di metodi di prova per la determinazione della dimensione ...
- (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]);
}
... produce i seguenti risultati del registro ...
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}
Mentre il primo e secondo i risultati hanno senso per me - il la dimensione del corpo corrisponde alla dimensione dell'attributo style e la dimensione div corrisponde al contenuto effettivo: il terzo risultato non ha senso. Infatti, UIWebView sembra inserire il contenuto HTML effettivo di 8 pixel su alcuni bordi (in alto, in basso ea sinistra in questo caso, sembra) tale che la dimensione adattata data da sizeThatFits: non corrisponde all'altezza del corpo di Javascript/risultato della larghezza.
Qualcuno può dare una spiegazione per questo e potenzialmente un modo per eliminare questi inserimenti? Grazie.
Ovviamente, una risposta così semplice - grazie per la pronta risposta. –