UIWebView加载进度并调整网页以适应视图页面?

ara*_*ide 9 iphone uiwebview

我正在使用UIWebView加载网页.

有3个问题:

1.当UIWebView加载页面时,是否可以跟踪百分比进度?

2.我注意到当Safari加载网页时,URL文本字段显示蓝色背景进度指示器,告诉用户加载网页的百分比.这是什么技术?

3.我知道有财产scalePageToFit

scalesPageToFit一个布尔值,用于确定网页是否缩放以适合视图,用户可以更改比例.

我尝试将其设置为YES,但看起来它不在公共API中,我的应用程序停止了黑屏,我不确定是什么问题?

Pyr*_*927 21

回答#1)

您可以使用NSURLConnection将网页作为NSData对象拉出,而不是使用UIWebView.当您收到来自您的请求的初始回复时

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
Run Code Online (Sandbox Code Playgroud)

Web服务器应返回"预期内容大小"的值(应包含在响应中).然后,每次收到数据时,您将继续调用以下方法:

 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
Run Code Online (Sandbox Code Playgroud)

继续将数据附加到现有的NSMutableData对象.然后,您可以根据预期的响应大小检查当前数据对象的大小(NSMutableData.length).

percentage = (myData.length*100)/theResponse.expectedContentSize;
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用该百分比更新进度条!什么时候

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
Run Code Online (Sandbox Code Playgroud)

运行,使用您的数据来打电话

[myWebView loadData:myData MIMEType:myMimeType textEncodingName:myEncoding baseURL:baseURL];
Run Code Online (Sandbox Code Playgroud)

它会将您下载的所有内容加载到Web视图中.

  • 请注意,此方法不会告诉您何时加载"整个"页面,只是第一个"index.html"文件具有.但是这个"index.html"页面可能很好地包含图像,脚本和其他资源,这些资源需要在网页被真正地视为"加载"之前加载.但真正做到这一点意味着自己解析HTML. (4认同)