views:

518

answers:

2

Hello everyone

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?

Welcome any comment

Thanks interdev

+2  A: 

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 NSData object. Then you can check the size of your current data object (NSData.bytes) against the expected response size.

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

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.

Pyro2927
A: 

Re #3:

You can try specifying scalePagesToFit as a YES in the viewDidLoad event of the UIView that contains your webview, e.g:

- (void)viewDidLoad {
    self.webView.scalesPageToFit = YES;
    //other code here...
}

For cases where this doesn't work, refer to the following StackOverflow question: http://stackoverflow.com/questions/1511707/uiwebview-does-not-scale-content-to-fit where the asker (and subsequently, answerer) gave this solution.

Apparently you can use javascript to resize your page to fit the browser:

NSString *jsCommand = [NSString stringWithFormat:@"document.body.style.zoom = 1.5;"];
[webLookupView stringByEvaluatingJavaScriptFromString:jsCommand];
Jon Limjap