Iphone – UIWebView loading progress and adjust web page to fit the view page

iphoneuiwebview

I am using UIWebView to load a web page.

There are 3 questions:

1.It it possible to track the percentage progress when UIWebView is loading the page?

2.I noticed that when Safari loading a web page, the URL textfield displays a blue background progress indicator to tell user the percentage of loading a web page. What is the technology for this?

3.I know there is property scalesPageToFit

scalesPageToFit
A Boolean value determining whether the webpage scales to fit the view and the user can change the scale.

I try to set it to YES, but it looks like that it is not in public API and my app stopped with black screen, I am not sure what is wrong?

Best Answer

To answer #1)

Instead of using a UIWebView, you can pull the webpage down as an NSData object using an NSURLConnection. When you get the initial response from your request from

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

the webserver should return a value of "expected content size" (which should be included in the response). Then you will keep getting the following method called each time you receive data:

 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

Keep appending the data to an existing NSMutableData object. Then you can check the size of your current data object (NSMutableData.length) against the expected response size.

percentage = (myData.length*100)/theResponse.expectedContentSize;

Then you can update a progress bar with that percentage! When

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

runs, use your data to call

[myWebView loadData:myData MIMEType:myMimeType textEncodingName:myEncoding baseURL:baseURL];

and it will load everything you pulled down into your web view.

Related Topic