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. [HTML5]移动开发不同手机弹出数字键盘问题

    这里还是先那么先交代一下遇到的问题.其实无论是tel还是number都不是完美的:type="tel"优点是iOS和Android的键盘表现都差不多缺点是那些字母好多余,虽然我没有 ...

  2. Bootstrap modal被sliverlight掩盖。

    Bootstrap中的modal被silverlight遮挡了,解决方案: <object id='xx'....> ... <param name="windowless ...

  3. Django:使用PyCharm创建django项目并发布到apache2.4

    环境: python2.7 x64 win7 x64 django (通过pycharm创建时自动安装)版本:1.10.2 apache:2.4 x64 下载pycharm个人版非社区版本并激活 起初 ...

  4. 响应式布局1--媒体查询和-webkit-min-device-pixel-ratio

    -webkit-min-device-pixel-ratio其实就是这个玩意 window.devicePixelRatio是设备上物理像素和设备独立像素(device-independent pix ...

  5. RelativeLayout实现左中右布局

    <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_co ...

  6. HTML5中的时间类型,另外EL表达式的时间值来读取时间,并且还可以更改时间

    HTML5规范里只规定date新型input输入类型,并没有规定日历弹出框的实现和样式.所以,各浏览器根据自己的设计实现日历.目前只有谷歌浏览器完全实现日历功能.相信这种局面很快就会结束,所有的浏览器 ...

  7. windows系统调用 调度优先级

    #include "iostream" #include "windows.h" using namespace std; class CWorkerThrea ...

  8. Mysql 语句中对关键字进行转义的方式

    在SQLserver中, 对列名表名库名Owner进行转义使用的是[ ] 这个我在其他文章中讲过 ,而且这是一个很好的习惯! 同理  在MySql中 也建议对表名等进行转移  使用的方式是 ``  就 ...

  9. Openstack的web管理端相关

    openstack的web管理端技术方面要关注的问题. 同步?异步 先说浏览器的同步和异步,我们知道的浏览器可以使用ajax实现异步请求,就是浏览器在请求数据的时候,我们管理员还能对浏览器就行其他操作 ...

  10. 利用BMFont和NGUI制作字体集

    Unity中常常需要制作字体,也算是Unity的基本优势吧!其实质就是BMFont和NGUI制作字体.这里把步骤介绍一下: 1.先下载BMFont这个工具 2.Font Settings  设置:(1 ...