一、UIWebView 可以加载和显示某个URL的网页,也可以显示基于HTML的本地网页或部分网页:

a. 加载 URL

  1. WebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 400)];
  2. NSString *path = @"http://www.baidu.com";
  3. NSURL *url = [NSURL URLWithString:path];
  4. [WebView loadRequest:[NSURLRequest requestWithURL:url]];

b. 加载 HTML

NSBundle *bundle = [NSBundle mainBundle];
NSString *resPath = [bundle resourcePath];
NSString *filePath = [resPath stringByAppendingPathComponent:@"Home.html"];
[webView loadHTMLString:[NSString stringWithContentsOfFile:filePath]
  baseURL:[NSURL fileURLWithPath:[bundle bundlePath]]];

二、使用网页加载指示,加载完成后再显示网页出来

首先要指定委托方法:

webView.delegate =self;

UIWebView主要有下面几个委托方法:

1、- (void)webViewDidStartLoad:(UIWebView *)webView;开始加载的时候执行该方法。
      2、- (void)webViewDidFinishLoad:(UIWebView *)webView;加载完成的时候执行该方法。
      3、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加载出错的时候执行该方法。

这样,可以利用 webViewDidStartLoad 和 webViewDidFinishLoad 方法实现本功能:

  1. - (void) webViewDidStartLoad:(UIWebView *)webView
  2. {
  3. //创建UIActivityIndicatorView背底半透明View
  4. UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
  5. [view setTag:108];
  6. [view setBackgroundColor:[UIColor blackColor]];
  7. [view setAlpha:0.5];
  8. [self.view addSubview:view];
  9. activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
  10. [activityIndicator setCenter:view.center];
  11. [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
  12. [view addSubview:activityIndicator];
  13. [activityIndicator startAnimating];
  14. }
  15. - (void) webViewDidFinishLoad:(UIWebView *)webView
  16. {
  17. [activityIndicator stopAnimating];
  18. UIView *view = (UIView*)[self.view viewWithTag:108];
  19. [view removeFromSuperview];
  20. NSLog(@"webViewDidFinishLoad");
  21. }

三、UIWebView还可以通过 stringByEvaluatingJavaScriptFromString 函数来执行 javascript代码,从而可以更加灵活地处理网页文件

1. 获得UIWebView的标题
NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];

2. 获取页面的URL

NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];

3. 修改页面元素的值

NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='朱祁林';"];

4. 表单提交

NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "]

5. 字体颜色:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextFillColor= 'white'"];

6. 背景颜色:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.backgroundColor = 'black';"];

7. 文本大小:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '80%'"];

四、综合运用以上方法,还可以实现部分网页的显示,基本思路如下:

1. 用 loadRequest 先获取网页,但先设置 UIWebView.hidden = YES;

2. 在 webViewDidFinishLoad 中,用

NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_x_x_xx_x_x('xxxx').innerHTML; "] 获取指定标签元素的HTML代码
    3. 再使用 loadHTMLString 加载该HTML代码,即可

iOS WebView的用法的更多相关文章

  1. iOS Webview 实现修改javascript confirm 和 alert

    贴代码: @interface UIWebView (JavaScriptAlert) -(void) webView:(UIWebView *)sender runJavaScriptAlertPa ...

  2. ios webView 默认有缓存

    ios webview清除缓存. ios默认webview是有缓存的,所以不改变URL的话,刷新不了网页数据,或者像我这样写 NSMutableURLRequest *request = [NSMut ...

  3. IOS NSUserDefaults 讲解 用法

    IOS NSUserDefaults 讲解 用法    NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名.密码之类的,个人觉得使用NSUserDefaults ...

  4. iOS WebView 加载本地资源(图片,文件等)

    https://www.cnblogs.com/dhui69/p/5596917.html iOS WebView 加载本地资源(图片,文件等) NSString *path = [[NSBundle ...

  5. iOS webview加载时序和缓存问题总结

    iOS webView的加载时序 UIWebView加载顺序: - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSU ...

  6. ios Block详细用法

    ios Block详细用法 ios4.0系统已开始支持block,在编程过程中,blocks被Obj-C看成是对象,它封装了一段代码,这段代码可以在任何时候执行.Blocks可以作为函数参数或者函数的 ...

  7. WebView的用法

    基本用法 布局文件配置WebView <WebView android:id="@+id/wv_news_detail" android:layout_width=" ...

  8. iOS WebView All In One

    iOS WebView All In One WKWebView / UIWebView Swift Playground //: A UIKit based Playground for prese ...

  9. iOS webView的一些基本用法

    1.自己拼接html来显示想要的文字(参考:http://www.mamicode.com/info-detail-492242.html) NSString *htmlStr=@"< ...

随机推荐

  1. and的用法(&)

    经常看到jq的源码中各种&连接在一起赋值一个变量, 例一: var b = a&&a.getName 例二: var b = a&&a.getName||d 例 ...

  2. gre tunnel

    http://searchenterprisewan.techtarget.com/tip/GRE-tunnel-vs-IPsec-tunnel-What-is-the-difference Enca ...

  3. HttpWebRequest 抓取页面异常处理办法

    抓取页面异常处理办法 public static string GetHtmlTest(string URI) { string fullhtml = null; while (true) { try ...

  4. listener、context、filter、servlet及其加载顺序

    首先说加载顺序:context-param—>listener —> filter —> servlet 这四类加载顺序与配置顺序无关,对于每一类内部的加载顺序,与配置顺序有关: l ...

  5. MyBatis 返回新增数据的自增id

    <insert id="save" parameterType="Vote" useGeneratedKeys="true" keyP ...

  6. 使用oracle数据库开发,异常总结

    最近两天使用的oracle数据库开发项目时遇到了2个异常,第一个是执行sql语句时报异常:“ORA-00911: 无效字符”,如下图: sql语句如下: 断点调试,把sql语句拷贝到pl/sql里执行 ...

  7. Spring MVC中,事务是否可以加在Controller层

    一般而言,事务都是加在Service层的,但是爱钻牛角尖的我时常想:事务加在Controller层可不可以.我一直试图证明事务不止可以加在Service层,还可以加在Controller层,但是没有找 ...

  8. 拖动滚动条时某一处相对另一处固定不动(position:fixed)

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  9. OpenGL--------纹理处理

    我们可以将像素数据按照矩形进行缩小和放大,但是还不足以满足我们的要求.例如要将一幅世界地图绘制到一个球体表面,只使用glPixelZoom这样的函数来进行缩放显然是不够的.OpenGL纹理映射功能支持 ...

  10. 多校 Cow Bowling

    题目链接:http://acm.hust.edu.cn/vjudge/contest/124435#problem/I 密码:acm Sample Input Sample Output 分析: #i ...