您的位置:首页 > 移动开发

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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: