Bazı değişken boyutlu içerikleri görüntülemek için bir UIWebView kullanmaya çalışıyorum ve bu içeriğin tam boyutunu belirlemek istiyorum, böylece UIWebView öğesini içeriğin boyutuna tam olarak uyacak şekilde yeniden boyutlandırabilirim. Bununla birlikte, içeriğin doğru yüksekliğini ve genişliğini belirleme girişimlerim henüz tam olarak anlaşılamamıştır. Birinci ve ikinci sonuç bana mantıklı olsa boyutunu bulmak için test yöntemleri aşağıdaki girişimi ...Neden - [UIWebView sizeThatFits:], document.body.offsetHeight/Width öğesinden daha büyük bir boyut veriyor?
- (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]);
}
... Aşağıdaki günlüğü sonuçlarını ...
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}
üretir - beden boyutu, stil niteliğindeki boyuta eşleşir ve div boyutu gerçek içeriğe uyar - üçüncü sonuç mantıklı değildir. Gerçekten de, UIWebView gerçek HTML içeriğini bazı kenarlarda (bu durumda, üstte, altta ve solda) 8 piksel kadar yazıyor gibi görünmektedir. SizeThatFits tarafından verilen takılan boyut, Javascript gövdesi yüksekliği ile eşleşmiyor. genişlik sonucu.
Bunun için bir açıklama yapabilir ve potansiyel olarak bu bilgileri ortadan kaldırmanın bir yolu olabilir mi? Teşekkürler.
Elbette, bu kadar basit bir cevap - hızlı cevap için teşekkürler. –