[英]iOS stringByEvaluatingJavaScriptFromString - UI freeze
[英]iOS stringByEvaluatingJavaScriptFromString issue
我在下面的代碼中設置了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時文檔和img的高度不會改變。 也許我需要創建一些重載方法?
設置src屬性后,您將立即訪問高度和寬度。 您應該等待圖像首先加載。
您可以通過在以下委托調用中檢查請求URL來檢測是否正在加載圖像。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
知道圖像開始加載后,您可以在隨后的調用中獲取其高度和寬度
- (void)webViewDidFinishLoad:(UIWebView *)webView
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.