100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > iOS 使用NJKWebViewProgress做webview进度条(加载网页时获取加载进度)

iOS 使用NJKWebViewProgress做webview进度条(加载网页时获取加载进度)

时间:2019-08-13 01:08:20

相关推荐

iOS 使用NJKWebViewProgress做webview进度条(加载网页时获取加载进度)

使用到的第三方库:NJKWebViewProgress

使用:采用代理方式,在代理中获取进度,并赋值给进度条。具体看代码。

#import "ViewController.h"#import "NJKWebViewProgress.h"#import "NJKWebViewProgressView.h"@interface ViewController ()<UIWebViewDelegate,NJKWebViewProgressDelegate>@property (nonatomic, strong) UIView *maskView;@property (nonatomic, strong) UIView *urlInputView;@property (nonatomic, strong) UITextField *urlInput;@property (nonatomic, strong) UIWebView *webView;@property (nonatomic, strong) NJKWebViewProgressView *progressView;@property (nonatomic, strong) NJKWebViewProgress *progressProxy;@end@implementation ViewController- (void)viewWillAppear:(BOOL)animated{[super viewWillAppear:animated];// 添加进度条[self.navigationController.navigationBar addSubview:self.progressView];}-(void)viewWillDisappear:(BOOL)animated{[super viewWillDisappear:animated];// 因为与其他viewcontroller共用一个UINavigationBar,所以需要移除进度条[self.progressView removeFromSuperview];}- (void)viewDidLoad {[super viewDidLoad];self.title = @"Test_WebViewProgress";self.navigationController.navigationBar.translucent = NO;self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 64)];[self.view addSubview:self.webView];NSString *url = @"/u/b0577513";[[NSUserDefaults standardUserDefaults] setObject:url forKey:@"weburl"];[self loadWithUrlStr:url];}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.}#pragma mark -- NJKWebViewProgressDelegate- (void)webViewProgress:(NJKWebViewProgress *)webViewProgress updateProgress:(float)progress{[self.progressView setProgress:progress animated:YES];self.title = [self.webView stringByEvaluatingJavaScriptFromString:@"document.title"];}/** 重新加载*/- (IBAction)reload:(id)sender {[self.webView reload];}/** 打开 url 输入面板*/- (IBAction)onOpenUrlInput:(id)sender{if (self.maskView == nil) {self.maskView = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];self.maskView.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.75];}if (self.urlInputView == nil) {self.urlInputView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 300, 105)];self.urlInputView.backgroundColor = [UIColor lightGrayColor];self.urlInputView.layer.cornerRadius = 8.0f;self.urlInputView.layer.masksToBounds = YES;self.urlInput = [[UITextField alloc]initWithFrame:CGRectMake(10, 15, 280, 30)];self.urlInput.autocapitalizationType = UITextAutocapitalizationTypeNone;self.urlInput.autocorrectionType = UITextAutocorrectionTypeNo;self.urlInput.clearButtonMode = UITextFieldViewModeWhileEditing;self.urlInput.backgroundColor = [UIColor whiteColor];self.urlInput.layer.cornerRadius = 4.0f;self.urlInput.layer.masksToBounds = YES;[self.urlInputView addSubview:self.urlInput];UIButton* btn = [[UIButton alloc]initWithFrame:CGRectMake(230, 60, 60, 30)];btn.backgroundColor = [UIColor colorWithRed:81.0f/255.0f green:141.0f/255.0f blue:229.0f/255.0f alpha:1.0f];btn.layer.cornerRadius = 4.0f;btn.layer.masksToBounds = YES;[btn setTitle:@"Load" forState:UIControlStateNormal];[btn addTarget:self action:@selector(onOpenInputedUrl:) forControlEvents:UIControlEventTouchUpInside];[self.urlInputView addSubview:btn];}NSString* webUrl = [[NSUserDefaults standardUserDefaults]objectForKey:@"weburl"];self.urlInput.text = webUrl;UIWindow* keyWnd = [UIApplication sharedApplication].keyWindow;if (keyWnd) {if (self.maskView.superview) {[self.maskView removeFromSuperview];}[keyWnd addSubview:self.maskView];if (self.urlInputView.superview) {[self.urlInputView removeFromSuperview];}[keyWnd addSubview:self.urlInputView];self.urlInputView.center = keyWnd.center;CGRect frame = self.urlInputView.frame;frame.origin.y = 84;self.urlInputView.frame = frame;}}/** 点击 load 按钮 */- (void)onOpenInputedUrl:(id)sender{if (self.urlInputView.superview) {[self.urlInputView removeFromSuperview];}if (self.maskView.superview) {[self.maskView removeFromSuperview];}NSString* urlStr = self.urlInput.text;if (urlStr.length > 0) {if (![urlStr hasPrefix:@"http"]) {urlStr = [NSString stringWithFormat:@"http://%@", urlStr];}[[NSUserDefaults standardUserDefaults] setObject:urlStr forKey:@"weburl"];[self loadWithUrlStr:urlStr];}}/** 导航条下面的进度条 */- (NJKWebViewProgressView *)progressView {if(!_progressView) {_progressProxy = [[NJKWebViewProgress alloc] init];_webView.delegate = _progressProxy;_progressProxy.webViewProxyDelegate = self;_progressProxy.progressDelegate = self;CGFloat progressBarHeight = 2.f;CGRect navigaitonBarBounds = self.navigationController.navigationBar.bounds;CGRect barFrame = CGRectMake(0, navigaitonBarBounds.size.height - progressBarHeight, navigaitonBarBounds.size.width, progressBarHeight);_progressView = [[NJKWebViewProgressView alloc] initWithFrame:barFrame];_progressView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;_progressView.progressBarView.backgroundColor = [UIColor blueColor];_progressView.progress = 0;}return _progressView;}/**加载 url */- (void)loadWithUrlStr:(NSString*)urlStr{if (urlStr.length > 0) {dispatch_async(dispatch_get_main_queue(), ^{NSURLRequest *webRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]cachePolicy:NSURLRequestReturnCacheDataElseLoadtimeoutInterval:30];[self.webView loadRequest:webRequest];});}}@end复制代码

运行效果:

联系作者:简书·DH_Fantasy 新浪微博·DH_Fantasy 版权声明:自由转载-非商用-非衍生-保持署名(CC BY-NC-ND 3.0)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。