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];
          NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:          [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 &lt;基础二十六&gt;进度条

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. ios基础篇(二十五)—— Animation动画(UIView、CoreAnimation)

    Animation主要分为两类: 1.UIView属性动画 2.CoreAnimation动画 一.UIView属性动画 UIKit直接将动画集成到UIView类中,实现简单动画的创建过程.UIVie ...

随机推荐

  1. 约在CBD,吃饭

    午饭当然是外卖. CBD上班的同仁们不用约,都去了一间叫“大食堂”的餐厅. 它在商业街繁华地段的二楼,有1000平米.你不知道么,餐馆们都躲到找不着的角落,变成了厨房,这里的租金便宜得很.但它不做饭, ...

  2. 当想mysql某插入有某字段设置了unique且和之前相同时,会报错,并停止运行

  3. Access is denied

    昨天有学习ASP.NET MVC的publish和IIS发行网站<简单的ASP.NET MVC发布>http://www.cnblogs.com/insus/p/4466200.html  ...

  4. 李洪强iOS开发之多线程编程2-NSOperation

    前言 1.上一讲简单介绍了NSThread的使用,虽然也可以实现多线程编程,但是需要我们去管理线程的生命周期,还要考虑线程同步.加锁问题,造成一些性能上的开销.我们也可以配合使用NSOperation ...

  5. Java泛型的好处

       java 泛型是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. ...

  6. UVaLive 7359 Sum Kind Of Problem (数学,水题)

    题意:给定一个n,求前 n 个正整数,正奇数,正偶数之和. 析:没什么好说的,用前 n 项和公式即可. 代码如下: #pragma comment(linker, "/STACK:10240 ...

  7. PHP 正则通配符

    $a = preg_match('/ph+p/','aaaphpbbbp'); +的前导就是h $a = preg_match('/ph+p/','aaaphhhhhhhhhhpbbbp'); //第 ...

  8. wireshark filter manualpage

    NAME wireshark-filter - Wireshark filter syntax and reference SYNOPSIS wireshark [other options] [ - ...

  9. Java 反射之动态代理

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt205 利用Java反射机制你可以在运行期动态的创建接口的实现.java.la ...

  10. mn

    http://image.uczzd.cn/10129986679866437816.jpg?id=0&from=export https://www.cnblogs.com/ityoukno ...