Saturday, August 11, 2012

Web View General

Adding a simple WebView to a view

In #ViewController.h
        IBOutlet UIWebView *webView1;
In Interface Builder
Drag the Web View onto the view
Connect the webView outlet to it

Displaying an Internet URL
E.g. in #ViewController.m ViewDidLoad:
        NSString *urlAddress = @"http://www.google.com";
        NSURL *url = [NSURL URLWithString:urlAddress];
        NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
        [webView1 loadRequest:requestObj];

Setting The Zoom Level Of A Web View

        [myWebView stringByEvaluatingJavaScriptFromString:@"document. body.style.zoom = 0.5;"];

Scrolling A Web View

        int scroll=20; //Pixels to scroll
        NSString* s=[[NSString alloc] initWithFormat:@"window.scrollTo(0, %i)",scroll];
        [webView stringByEvaluatingJavaScriptFromString:s];

Displaying Rich Text In A Web View

A useful way of displaying rich text labels etc.
If you are using a webview as a label ensure you select it in the viewcontroller and turn off “user interaction enabled”, otherwise it will be dragable etc
     NSString *MyHtml = @"<html><head><title></title><style type=\"text/css\">BODY {font-family:georgia; font-size: 14px;}</style></head><body>";       //Set default font
     MyHtml = [MyHtml stringByAppendingString:@"<p>Some sample HTML text <strong>bold</strong>, <u>underlined</u>, <span style=\"color:#FF0000\">colored</span>.</p>"];
     MyHtml = [MyHtml stringByAppendingString:@"</body></html>"];       //The text to display
     [webView1 loadHTMLString:MyHtml baseURL:[NSURL URLWithString:@"http://www.google.com"]];     //The baseURL allows relative URLs within a document and can just use a dummy value
Note that even doing this is in viewDidLoad (the earliest point for a view) the web view typically won’t load until the view has been shown the first time (i.e. slid into view) – very annoying.  You can’t force a webview to load before a view is shown, so if you want to do it you have to do it programmatically:

No comments:

Post a Comment