我在下面的代码中设置了我的UIWebView:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById(\"image\").src=\"q%@.png\";", self.imageIndex]];
NSLog(@"%f", [[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"image\").height;"] floatValue]);
CGFloat width = [[webView stringByEvaluatingJavaScriptFromString:@"document.width"] floatValue];
CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue];
CGSize contentSize = CGSizeMake(width, height);
[self setUpNewSize:contentSize];
}
我为具有id的对象设置了新图像(并且它可以工作)。但尺寸不会改变。如您所见,我使用NSLog打印高度值,但高度显示为0.0000。
这是我的HTML文件:
<!DOCTYPE html>
<html>
<head>
<title>Question 1</title>
</head>
<body>
<h3 id="header">Question 1</h3>
<img id="image" src="" alt="" width="100%">
</body>
</html>
每个图像都有不同的高度,它会动态变化。所以我的问题是为什么当我调用stringByEvaluatingJavaScriptFromString时,document和img的高度不会改变。也许我需要创建一些重载方法?
答案 0 :(得分:1)
您在设置src属性后立即访问高度和宽度。您应该等待图像先加载。
您可以通过检查以下委托调用中的请求网址来检测图像是否已加载。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
一旦你知道图像开始加载,你就可以在随后的
调用中获得它的高度和宽度- (void)webViewDidFinishLoad:(UIWebView *)webView