1

我在下面有这个代码来设置我的 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 的高度没有改变。也许我需要创建一些重新加载方法?

4

1 回答 1

1

您在设置 src 属性后立即访问高度和宽度。您应该先等待图像加载。

您可以通过检查以下委托调用中的请求 url 来检测图像是否正在加载。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

一旦您知道图像开始加载,您就可以在随后的调用中获取它的高度和宽度

- (void)webViewDidFinishLoad:(UIWebView *)webView
于 2013-04-02T00:30:19.637 回答