UIWebView是内置的浏览器控件,可以用它来浏览网页、打开文档等。UIWebView是一个混合体,具体的功能控件内置的,实现一些基本的功能。UIWebView可以查看Html网页,pdf文件,docx文件,txt文件文件,系统自带的Safari就是UIWebView实现的。

这篇文章将使用这个控件做一个简易浏览器;如图:

新建一个工程,命名为UIWebViewDemo;

如上图,界面上分别放了UITextField(用于地址栏),UIButton(用于设置点击事件),UIWebView(用于展示网页)三个控件。

基础布局:

UITextField,UIButton就不说了,先来看看UIWebView;

 @interface ViewController ()<UIWebViewDelegate>{

     UITextField *textFiled;
UIButton *button;
UIWebView *webView;
UIActivityIndicatorView *activityIndicator; }

不要忘了设置代理,

 //初始化浏览器控件UIWebView
webView = [[UIWebView alloc] initWithFrame:(CGRect){,,width,height-}];
[self.view addSubview:webView];
4  webView.delegate = self;
//定义请求地址
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];
//利用浏览器访问地址
[webView loadRequest:request];

网络连接是会遇到半天才加载出来数据的情况,网速比较慢的时候,一般都都会给个提示让用户感觉到我们在努力的加载数据;iOS可以通过UIActivityIndicatorView实现类似的效果,UIActivityIndicatorView实例提供轻型视图,这些视图显示一个标准的旋转进度轮。

iPhone提供了几种不同样式的UIActivityIndicatorView类。UIActivityIndicator- ViewStyleWhite和UIActivityIndicatorViewStyleGray是最简洁的。黑色背景下最适合白色版本的外观,白色背景最适合灰色外观;选择白色还是灰色时要格外注意,全白显示在白色背景下将不能显示任何内容。而UIActivityIndicatorViewStyleWhiteLarge只能用于深色背景,它提供最大、最清晰的指示器。

设置UIWebView,初始化UIActivityIndicatorView:

 activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:(CGRect){,,,}];
[backView addSubview:activityIndicator];
activityIndicator.center = self.view.center;
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
[activityIndicator startAnimating];

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

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

开始加载(为了看的清除,我们加上黑色半透明背景和白色的旋转进度轮)

 - (void)webViewDidStartLoad:(UIWebView *)webView{
UIView *backView = [[UIView alloc] initWithFrame:(CGRect){,,self.view.frame.size.width,self.view.frame.size.height}];
backView.alpha = 0.5;
backView.backgroundColor = [UIColor blackColor];
[self.view addSubview:backView];
backView.tag = ; activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:(CGRect){,,,}];
[backView addSubview:activityIndicator];
activityIndicator.center = self.view.center;
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];
[activityIndicator startAnimating];
}

加载完成(旋转进度轮停止,黑色背景移除)

 - (void)webViewDidFinishLoad:(UIWebView *)webView{

     [activityIndicator stopAnimating];
UIView *view = [self.view viewWithTag:];
[view removeFromSuperview]; }

加载出现错误时,给予提示

 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

     [activityIndicator stopAnimating];
UIView *view = [self.view viewWithTag:];
[view removeFromSuperview]; UIAlertView *alterview = [[UIAlertView alloc] initWithTitle:@"出现错误" message:@"" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alterview show]; }

ios基础篇(十六)——UIWebView的基本使用的更多相关文章

  1. ios基础篇(六)——UITextView的常用方法及技巧

    上篇说到了UITextField,我们先来说说UITextView和UITextField的不同: UITextView支持多行输入; UITextFiled只支持单行; UITextView没有pl ...

  2. Bootstrap <基础二十六>进度条

    Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet ...

  3. 小猪猪C++笔记基础篇(六)参数传递、函数重载、函数指针、调试帮助

    小猪猪C++笔记基础篇(六) ————参数传递.函数重载.函数指针.调试帮助 关键词:参数传递.函数重载.函数指针.调试帮助 因为一些事情以及自己的懒惰,大概有一个星期没有继续读书了,已经不行了,赶紧 ...

  4. python基础篇(六)

    PYTHON基础篇(六) 正则模块re A:正则表达式和re模块案例 B:re模块的内置方法 时间模块time A:时间模块的三种表示方式 B:时间模块的相互转换 随机数模块random A:随机数模 ...

  5. css3基础教程十六变形与动画animation

    前面我们讲过的变形与动画一般都是通过鼠标的单击.获得焦点,被点击或对元素进行一定改变后以后触发效果的,那么有没有像Flash一样自动播放的动画效果呢?答案当然是肯定的,这就是我们今天要讲到的anima ...

  6. linux基础-第十六单元 yum管理RPM包

    第十六单元 yum管理RPM包 yum的功能 本地yum配置 光盘挂载和镜像挂载 本地yum配置 网络yum配置 网络yum配置 Yum命令的使用 使用yum安装软件 使用yum删除软件 安装组件 删 ...

  7. Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM

    写在前面的话   承接前文<Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven>,本篇所讲述的是如何使用maven与原ssm项目整合,使得一个普 ...

  8. ios基础篇(二十六)—— UITableViewCell的分组索引与标记

    一.表视图的索引目录 首先要创建一个TableView,之前有说过,这里就不详细说了(参考前面第十四篇). 直接贴代码吧, #import "ViewController.h" @ ...

  9. ios基础篇(二十九)—— 多线程(Thread、Cocoa operations和GCD)

    一.进程与线程 1.进程 进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内: 如果我们把CPU比作一个工厂,那么进程就好比工厂的车间,一个工厂有 ...

随机推荐

  1. Lua自己实现string.split功能

    local function split(str, d) --str是需要查分的对象 d是分界符 local lst = { } local n = string.len(str)--长度 local ...

  2. 在Unity中如何取得一个Box的Bounds

    private BoxCollider mCollider; // Use this for initialization void Start () { mCollider = GetCompone ...

  3. AJAX-----14HTML5中新增的API---files

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 在linux中访问virtualbox的共享文件夹

    1.在客户机里需要安装Virtualbox的增强功能. 2.使用virtualbox的图形界面设置好共享文件夹. 3.假设你设置的共享文件夹的名称是 share,使用如下命令在客户机的linux系统中 ...

  5. python对json的操作总结

    Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式.Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式.现在也常用于h ...

  6. 执行gem install linne时报错

    由于linner安装实际上是从 rubygems.org 获得的,而其被墙,所以,需要寻找国内的镜像进行安装: 第一种方法: gem sources --remove https://rubygems ...

  7. kali安装nautilus-open-terminal不起作用

      apt-get install nautilus-open-terminal (鼠标右键在当前目录打开终端) 这个功能不起作用时,可以按如下操作,经试验有效! nautilus -q && ...

  8. bootstrap 下拉菜单不显示的解决办法

    bootstrap 下拉菜单不显示,最后改成如下正常显示: <div class="btn-group open"> <ul class="dropdo ...

  9. JS中iframe相关的window.self,window.parent,window.top

    window.self指的是当前窗口:他等价于window,self,window.self window.top指的是最顶层的窗口(有些页面可能会嵌套好几个iframe)如果只有一个窗口,那么就返回 ...

  10. python-判断系统平台

    1.windows 2.linux 总结 python提供了sys,os及platform等个模块读取平台信息,客官可以根据自己的喜好选择使用