SYProgressWebView
带有进度条的网页加载视图
效果图
使用
- 使用介绍
- 自动导入:使用命令pod 'SYProgressWebView' 导入到项目中
- 手动导入:或下载源码后,将源码添加到项目中
// 导入头文件
#import "SYProgressWebView.h"
// 定义成属性
@property (nonatomic, strong) SYProgressWebView *webView;
// 实例化及使用(使用block回调,注意循环引用)
self.webView = [[SYProgressWebView alloc] init];
[self.view addSubview:self.webView];
self.webView.frame = self.view.bounds;
self.webView.isBackRoot = NO;
self.webView.showActivityView = YES;
self.webView.showActionButton = YES;
// 网页加载
NSString *url = @"https://www.baidu.com";
// 方法1
self.webView.url = url;
// 方法2
[self.webView loadRequestWithURLStr:url];
// block回调 注意循环引用
__weak UIViewController *weakSelf = self;
[self.webView loadRequest:^(SYProgressWebView *webView, NSString *title, NSURL *url) {
NSLog(@"准备加载。title = %@, url = %@", title, url);
weakSelf.title = title;
} didStart:^(SYProgressWebView *webView) {
NSLog(@"开始加载。");
} didFinish:^(SYProgressWebView *webView, NSString *title, NSURL *url) {
NSLog(@"成功加载。title = %@, url = %@", title, url);
weakSelf.title = title;
} didFail:^(SYProgressWebView *webView, NSString *title, NSURL *url, NSError *error) {
NSLog(@"失败加载。title = %@, url = %@, error = %@", title, url, error);
weakSelf.title = title;
}];
// 代理回调
// 代理协议
SYProgressWebViewDelegate
// 代理对象
self.webView.delegate = self;
// 实现代理方法
#pragma mark - SYProgressWebViewDelegate
- (void)progressWebViewDidStartLoad:(SYProgressWebView *)webview
{
NSLog(@"开始加载。");
}
- (void)progressWebView:(SYProgressWebView *)webview title:(NSString *)title shouldStartLoadWithURL:(NSURL *)url
{
NSLog(@"准备加载。title = %@, url = %@", title, url);
self.title = title;
}
- (void)progressWebView:(SYProgressWebView *)webview title:(NSString *)title didFinishLoadingURL:(NSURL *)url
{
NSLog(@"成功加载。title = %@, url = %@", title, url);
self.title = title;
}
- (void)progressWebView:(SYProgressWebView *)webview title:(NSString *)title didFailToLoadURL:(NSURL *)url error:(NSError *)error
{
NSLog(@"失败加载。title = %@, url = %@, error = %@", title, url, error);
self.title = title;
}
// 返回前一个视图控制器(区分present,或push)
- (void)backPreviousController
{
if (self.webView)
{
if (self.webView.isBackRoot)
{
[self.webView stopLoading];
if ([self.navigationController.viewControllers indexOfObject:self] == 0)
{
[self dismissViewControllerAnimated:YES completion:nil];
}
else
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
}
else
{
if ([self.webView canGoBack])
{
[self.webView goBack];
}
else
{
if ([self.navigationController.viewControllers indexOfObject:self] == 0)
{
[self dismissViewControllerAnimated:YES completion:nil];
}
else
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
}
}
}
}
修改完善
- 20200423
- 版本号:1.1.0
- 修改优化
- iOS 8.0及以上系统适配
- 保留WKWebView,去掉UIWebView
- 动作按钮UI刘海适配(后退、前进、刷新)
- 删除冗余代码