UIWebView和UIActivityIndicatorView的结合使用
环境:Xcode6.1
UIWebView是iOS开发中常用的一个控件,是内置的浏览器控件,我们可以用它来浏览网页,加载文档等。这篇文件将结合UIActivityIndicatorView控件制作一个小实例(加载apple的官网)。效果如下:
一.建立一个SingleView工程
二.初始化界面
ViewController.h文件
#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (nonatomic,strong) UIActivityIndicatorView *activityIndicatorView;
@property (nonatomic,strong) UIWebView *webView; @end
ViewController.m文件中,先写一个初始化UI的方法
- (void)stepUI {
self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(, , self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:self.webView];
self.activityIndicatorView = [[UIActivityIndicatorView alloc] init];
self.activityIndicatorView.center = self.view.center;
self.activityIndicatorView.bounds = CGRectMake(, , , );
self.activityIndicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
[self.webView addSubview:self.activityIndicatorView];
}
在ViewDidLoad方法中加载初始化UI的方法和处理UIWebView要加载的内容,并设置代理
- (void)viewDidLoad {
[super viewDidLoad];
[self stepUI];
self.webView.delegate = self;
NSString *str = [NSString stringWithFormat:@"http://www.apple.com/"];
NSURL *url = [NSURL URLWithString:str];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
}
三.通过UIWebView的代理方法,处理UIActivityIndicatorView的显示
让ViewController遵守UIWebViewDelegate协议
UIWebViewDelegate有下面的几个方法:
- (void)webViewDidStartLoad:(UIWebView *)webView;开始加载的时候执行
- (void)webViewDidFinishLoad:(UIWebView *)webView;加载完成的时候执行
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加载出错的时候执行
UIActivityIndicatorView控件有如下的两个方法:
- (void)startAnimating;
- (void)stopAnimating;
#pragma mark ---web view delegate
- (void)webViewDidStartLoad:(UIWebView *)webView {
[self.activityIndicatorView startAnimating];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[self.activityIndicatorView stopAnimating];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
NSLog(@"%@",error);
}
对于加载时的出错,楼主只是简单的进行打印
最后,在模拟器上运行即可。
错误总结:
1.最开始写URL时没有写协议http,只是简单的www.apple.com,导致加载失败。
2.设置UIActivityIndicatorView控件的显示样式时,没有考虑到UIWebView的加载页面为白色,还傻兮兮的设置为
self.activityIndicatorView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
导致加载时没有看到显示效果,花了许久的时间才发现问题。所以写代码前一定要思维严谨,多做合理性的考虑。
UIWebView和UIActivityIndicatorView的结合使用的更多相关文章
- [iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]
原理: 1.JS调用OC 每次webview执行跳转时都会被iOS给拦截,执行下面函数获得系统允许. 因此可以根据跳转信息转给系统,执行相应功能,比如打开相册等. // 网页中的每一个请求都会被触发 ...
- ios基础篇(十六)——UIWebView的基本使用
UIWebView是内置的浏览器控件,可以用它来浏览网页.打开文档等.UIWebView是一个混合体,具体的功能控件内置的,实现一些基本的功能.UIWebView可以查看Html网页,pdf文件,do ...
- ios学习之UIWebView网页视图
转载于爱德凡的百度空间,地址:http://hi.baidu.com/aidfan/item/34a720866b33cbcdef083d37 UIWebView 使用详解 一.UIWebView加载 ...
- AFNetworking 3.0 源码解读(十一)之 UIButton/UIProgressView/UIWebView + AFNetworking
AFNetworking的源码解读马上就结束了,这一篇应该算是倒数第二篇,下一篇会是对AFNetworking中的技术点进行总结. 前言 上一篇我们总结了 UIActivityIndicatorVie ...
- IOS UIWebView 下拉刷新功能的简单实现
1.运行效果图 2.swift 代码的实现 import UIKit class RefreshWebViewController: UIViewController,UIScrollViewDele ...
- iOS UIWebView中javascript与Objective-C交互、获取摄像头
UIWebView是iOS开发中常用的一个视图控件,多数情况下,它被用来显示HTML格式的内容. 支持的文档格式 除了HTML以外,UIWebView还支持iWork, Office等文档格式: Ex ...
- iOS UIWebView和网页的交互(OC中调执行JS)
UIWebView和网页的交互(OC中调执行JS)- (void)viewDidLoad{[super viewDidLoad];// 1.webViewUIWebView *webView = [[ ...
- 对UIWebView的学习
建工程,建一个类WebViewController 继承于UIViewController WebViewController设置为根视图控制器 WebViewController遵守UIWebVie ...
- UIWebView swift
// // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...
随机推荐
- GUN/GPL 中文译文
版权所有 (C) 1989,1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307U ...
- [POJ1969]Count on Canton
NOIP1999普及组 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 9333 Accepted: 5469 Descr ...
- ACM2032
杨辉三角 Problem Description 还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 ...
- Android文字的阴影效果
<!-- android:shadowDx 阴影的水平偏移量 即往右移的距离 --> <!-- android:shadowDy 阴影的垂直偏移量 即往下移的距离--> < ...
- void,extern,sizeof
高手潜规则:禁用goto 程序质量与goto出现次数成反比 void指针的意义 1.C语言规定只有相同类型的指针才可以相互赋值 2.void*指针作为坐值用于"接收"任意类型的指针 ...
- Java比较运算符
注意哦: 1. > . < . >= . <= 只支持左右两边操作数是数值类型 2. == . != 两边的操作数既可以是数值类型,也可以是引用类型 public clas ...
- React-Native首次运行提示-ReferenceError-Can-t-find-variable-fbBatchedBridge
React Native运行报错ReferenceError: Can't find variable: _fbBatchedBridge' React Native目前貌似要火的样子,作为移动开发人 ...
- C++ 实现按随意键继续~~~
近期让学生敲代码交作业的时候要求他们仅仅给我交个cpp文件和一个exe文件,这样交上来的东西不至于太多,不占我的地方,可是有一个问题是exe它总是执行完后就直接关闭界面了,看不到执行结果的界面. 然后 ...
- java带图片的邮件发送方法实现
package sendEmail; import java.util.Properties; import javax.activation.DataHandler; import javax.ac ...
- 进程环境之setjmp和longjmp函数
在C中,goto语句是不能跨越函数的,而执行这样跳转功能的是函数setjmp和longjmp.这两个函数对于处理发生在深层嵌套函数调用中的出错情况是非常有用的. setjmp和longjmp函数也称为 ...