一、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代码,即可

转载于:https://www.cnblogs.com/jiang-xiao-yan/p/5949441.html

iOS WebView的用法相关推荐

  1. ios 获取html的高度,iOS Webview自适应实际内容高度的4种方法详解

    //第一种方法 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat webViewHeight=[webView.scrollVie ...

  2. IOS NSUserDefaults 讲解 用法

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

  3. h5与IOS webview的爱恨情仇 —ios端图片拉伸bug

    h5与IOS webview的爱恨情仇 -ios端图片拉伸bug 今天在ios的webview中图片出了一个诡异的bug,图片本来应该是width=0.18rem ,height=0.18rem;但是 ...

  4. Vue 自定义指令 解决IOS webview input 获取焦点被键盘遮挡

    Vue 自定义指令 解决IOS webview input 获取焦点被键盘遮挡 创建自定义指令 在使用input的地方添加自定义指令,记录一下还有优化空间. vue 文件 <div id=&qu ...

  5. ip访问 webstorem_常见问题-iOS WebView IP直连 如何处理 Cookie

    WKWebView 无法使用 NSURLProtocol 拦截请求 针对该问题方案如下: 换用 UIWebView 使用私有 API 进行注册拦截 换用 UIWebView 方案不做赘述,说明下使用私 ...

  6. iOS Webview打开不受信的URL

    在我们开发过程中经常会碰到直接访问开发人员的私有地址, 这样在app 上是无法打开指定的网页的. 在iOS中需要对WKWebView 进行如下设置: 1.在工程的Plist 文件中添加一下选项 App ...

  7. android网络技术-WebView的用法

    有时候我们可能会碰到一些比较特殊的需要,比如需要在应用程序里展示一些网页,加载和显示网页通畅都是浏览器的任务,但是需求里又明确指出,不允许打开系统浏览器,这个时候我们就要使用到WebView控件. 下 ...

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

    NSString *path = [[NSBundle mainBundle] pathForResource:@"关于.docx" ofType:nil]; NSURL *url ...

  9. Swift iOS : WebView缓存图片的方法

    广告 Swift iOS开发小书 ,帮你快速上手开发 www.ituring.com.cn/book/2413 正文 每次加载WebView内容,如果图片可以缓存的话,速度就会非常快.默认情况下,We ...

最新文章

  1. 三个优秀的语义分割框架 PyTorch实现
  2. Rust即将发布1.0版本,Go持续获得关注:如何在新生语言之间做出抉择
  3. mysql 求count和_MySQL的统计总数count(*)与count(id)或count(字段)的之间的各自效率性能对比...
  4. Golang开发环境搭建-Vim篇
  5. intelliJ idea运行新的test功能时,报错:class not found ..... empty test suite
  6. 全新释放 | RealSight APM, 让客户的极致数字体验成为可能
  7. ubuntu创建文件夹和删除文件
  8. mysql100链接同时处理_php 连接MYSQL 两个同时连接为什么只有一个连接成功,必须删掉一个,另外一个才查询生效出结果,下附代码...
  9. 快安排!QQ更新被吐槽低龄化 但这个功能让微信用户们“羡慕”哭了
  10. 从集合大小的定义到数学结构-解决了多年的疑惑
  11. 谷歌AI相机Clips今发售,“贴身摄影师”抓拍每一刻欢乐
  12. 本文主要介绍如何将音乐文件打包到程序中并设置为铃声
  13. matlab lu分解求线性方程组_线性代数10——矩阵的LU分解
  14. 方案:计算机软件单元测试(GB/T 15532-1995)
  15. Java 设计模式 Adapter 类适配器 模式
  16. Real-Time Rendering——18.5 Multiprocessing多处理
  17. 如何设置AD域用户仅登录到指定的计算机?AD域管理软件
  18. Java深圳工作面试经历(真实经历)!!!
  19. MYSQL 名人博客
  20. 提供 Android 酷炫的开屏动画 (awesome-opening-animation)

热门文章

  1. 常见浏览器兼容性问题与解决方案
  2. 游戏编程入门(1) -- 精灵 ISprite
  3. 整理的常用JAVA开源库简介
  4. 剑桥大学中国学联学术部文章
  5. 【转】Unity C# 调用C++ dll 问题集锦
  6. 【待填坑】LG_4996_咕咕咕
  7. 10.30T2 二分+前缀和(后缀和)
  8. 猜想:企业SaaS热火之后……
  9. 连接查询,结构、循环语句
  10. 结婚戒指为什么戴在无名指上的原因