UIWebView简单使用:加载进度条,加载PDF文件
2016-07-01 15:52
381 查看
UIWebView的使用是很常见的,现在将它的一些使用方式总结如下:
1)首先是最简单的加载一个URL(网页链接):
UIWebView *webView = [[UIWebViewalloc]
init];
webView.frame =CGRectMake(0,KNavigationHeight,
KScreenWidth,KScreenHeight-
KNavigationHeight);
NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://www.baidu.com"]];
[webView loadRequest:request];
[self.viewaddSubview:webView];
这样就可以加载出来百度的首页了。
2)有些比较大的网页,加载需要一些时间,这个时候我们就可以给网页的加载过程添加一个进度条,很多时候其实我们并没有必要按它真实的加载过程显示进度条,故可以使用假的进度条,模拟网页正在加载,做法如下:
自定义一个类,继承自UIView,就叫MyProgressView吧,它.h文件中如下
@interface MyProgressView :
UIView
//进度条的颜色
@property (nonatomic,strong)
UIColor *progressViewColor;
//进度条的高度
@property(nonatomic,assign)CGFloat progressViewHeight;
//开始加载进度条
-(void)startLoadData;
//结束加载进度条
- (void)finishLoadData;
@end
在.m文件中实现
static CGFloat progressViewY =64;
@implementation MyProgressView
{
UIView *_progressView;
}
- (instancetype)init
{
if (self = [superinit]) {
self.frame =CGRectMake(0,0, [UIScreenmainScreen].bounds.size.width,2);
}
return
self;
}
-(void)startLoadData
{
_progressView = [[UIViewalloc]
init];
_progressView.frame =CGRectMake(0,progressViewY,
0,self.progressViewHeight);
_progressView.backgroundColor =self.progressViewColor;
[UIViewanimateWithDuration:3animations:^{
_progressView.frame =CGRectMake(0,progressViewY,
self.frame.size.width-40,2);
} ];
[selfaddSubview:_progressView];
}
- (void)finishLoadData
{
[UIViewanimateWithDuration:0.5animations:^{
_progressView.frame =CGRectMake(0,progressViewY,
self.frame.size.width,2);
[selfremoveFromSuperview];
}];
}
这样我们就完成了一个假的进度条,使用按如下方法,将其放在viewDidLoad方法中:
MyProgressView *progressView = [[MyProgressViewalloc]
init];
self.progressView = progressView;
progressView.progressViewColor = [UIColorredColor];
progressView.progressViewHeight =
2;
[progressView startLoadData];
[self.viewaddSubview:progressView];
然后实现设置webView的代理为本控制器,实现代理方法:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[self.progressViewfinishLoadData];
}
网页整体加载完成后就干掉这个progressView,简单实现了加载进度条。
我们可以自定义进度条的颜色和高度等。
3)实现webView顶部下拉后面显示某些内容(本类中显示一个label)
这个功能实现起来比较简单,直接上代码:
UIWebView *webView = [[UIWebViewalloc]
init];
//随便添加的一个label,仅供实验~
UILabel *label = [[UILabelalloc]
initWithFrame:CGRectMake(0,0,
300, 50)];
label.text = @"good idea";
[webView addSubview:label];
[webView bringSubviewToFront:webView.scrollView];
4)利用webView加载PDF文件
UIWebView *webView = [[UIWebView
alloc] init];
webView.frame =CGRectMake(0,
KNavigationHeight, KScreenWidth,
KScreenHeight-KNavigationHeight);
//url是服务器传的PDF链接url或者本地文件的路径
//NSURL *url = [[NSBundle
mainBundle] URLForResource:@"xxxxx.docx"
withExtension:nil];
NSURL *url = [NSURL
URLWithString:self.urlString];
NSURLRequest *request = [NSURLRequest
requestWithURL:url];
[webView loadRequest:request];
webView.scalesPageToFit =
YES;//使PDF文件可以完全适配屏幕显示
[self.view
addSubview:webView];
1)首先是最简单的加载一个URL(网页链接):
UIWebView *webView = [[UIWebViewalloc]
init];
webView.frame =CGRectMake(0,KNavigationHeight,
KScreenWidth,KScreenHeight-
KNavigationHeight);
NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:@"http://www.baidu.com"]];
[webView loadRequest:request];
[self.viewaddSubview:webView];
这样就可以加载出来百度的首页了。
2)有些比较大的网页,加载需要一些时间,这个时候我们就可以给网页的加载过程添加一个进度条,很多时候其实我们并没有必要按它真实的加载过程显示进度条,故可以使用假的进度条,模拟网页正在加载,做法如下:
自定义一个类,继承自UIView,就叫MyProgressView吧,它.h文件中如下
@interface MyProgressView :
UIView
//进度条的颜色
@property (nonatomic,strong)
UIColor *progressViewColor;
//进度条的高度
@property(nonatomic,assign)CGFloat progressViewHeight;
//开始加载进度条
-(void)startLoadData;
//结束加载进度条
- (void)finishLoadData;
@end
在.m文件中实现
static CGFloat progressViewY =64;
@implementation MyProgressView
{
UIView *_progressView;
}
- (instancetype)init
{
if (self = [superinit]) {
self.frame =CGRectMake(0,0, [UIScreenmainScreen].bounds.size.width,2);
}
return
self;
}
-(void)startLoadData
{
_progressView = [[UIViewalloc]
init];
_progressView.frame =CGRectMake(0,progressViewY,
0,self.progressViewHeight);
_progressView.backgroundColor =self.progressViewColor;
[UIViewanimateWithDuration:3animations:^{
_progressView.frame =CGRectMake(0,progressViewY,
self.frame.size.width-40,2);
} ];
[selfaddSubview:_progressView];
}
- (void)finishLoadData
{
[UIViewanimateWithDuration:0.5animations:^{
_progressView.frame =CGRectMake(0,progressViewY,
self.frame.size.width,2);
[selfremoveFromSuperview];
}];
}
这样我们就完成了一个假的进度条,使用按如下方法,将其放在viewDidLoad方法中:
MyProgressView *progressView = [[MyProgressViewalloc]
init];
self.progressView = progressView;
progressView.progressViewColor = [UIColorredColor];
progressView.progressViewHeight =
2;
[progressView startLoadData];
[self.viewaddSubview:progressView];
然后实现设置webView的代理为本控制器,实现代理方法:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[self.progressViewfinishLoadData];
}
网页整体加载完成后就干掉这个progressView,简单实现了加载进度条。
我们可以自定义进度条的颜色和高度等。
3)实现webView顶部下拉后面显示某些内容(本类中显示一个label)
这个功能实现起来比较简单,直接上代码:
UIWebView *webView = [[UIWebViewalloc]
init];
//随便添加的一个label,仅供实验~
UILabel *label = [[UILabelalloc]
initWithFrame:CGRectMake(0,0,
300, 50)];
label.text = @"good idea";
[webView addSubview:label];
[webView bringSubviewToFront:webView.scrollView];
4)利用webView加载PDF文件
UIWebView *webView = [[UIWebView
alloc] init];
webView.frame =CGRectMake(0,
KNavigationHeight, KScreenWidth,
KScreenHeight-KNavigationHeight);
//url是服务器传的PDF链接url或者本地文件的路径
//NSURL *url = [[NSBundle
mainBundle] URLForResource:@"xxxxx.docx"
withExtension:nil];
NSURL *url = [NSURL
URLWithString:self.urlString];
NSURLRequest *request = [NSURLRequest
requestWithURL:url];
[webView loadRequest:request];
webView.scalesPageToFit =
YES;//使PDF文件可以完全适配屏幕显示
[self.view
addSubview:webView];
相关文章推荐
- Android 插件化 动态升级
- unity中的sun shafts(也称gay ray)的一种实现方法
- Android开发过程中的部分经验总结
- iOS开发之抓包工具Charles
- 取消ListView的点击效果
- iOS下虚拟键盘出现窗口缩放导致的问题
- 完美解决安卓滑动删除 以及下拉刷新的事件冲突
- 如何使用安卓Studio进行签名打包
- webView加载进度条显示
- android 输入框EditText禁止输入Emoji表情符
- 利用反射修改drawerLayout滑动边距
- 在Unity3D中使用ScriptableObject进行序列化
- android Sevice详解
- Android手记----TextView
- nagios 使用 sendEmail 发送报警邮件
- iOS原生APP与H5+JS交互
- Android 下 一些常用工具命令
- Unity3D研究院之IOS&Android收集Log文件
- swift 学习指南
- Android中ListView字母排序,实现字母挤压效果以及右侧快速选中字母,搜索关键字功能