ProgressWebViewController
一个使用带有进度条的导航栏的 WKWebView 实现的 WebViewController。WebViewController 是类似 Safari 的网络浏览器。
特性
✅ 导航栏中的进度条✅ 根据指定的主机绕过 SSL。(即,您可以使用 ProgressWebViewController 访问自签名证书网站)✅ 自定义栏按钮项✅ 将 Cookie 分配给 WebView✅ 浏览本地的 HTML 文件✅ 支持 iOS 11 中导航栏的大型标题✅ 支持自定义头部✅ 支持自定义用户代理✅ 打开特殊的 URL,包括应用商店、电话、邮件、短信和 _blank,以打开其他应用程序✅ 支持下拉刷新✅ 支持推送导航方式
要求
- iOS 9.0 或更高版本
v1.7.0-
- Swift 4
v1.8.0
- Swift 5
安装
Swift包管理器
Swift包管理器(Swift Package Manager)是一个用于自动化Swift代码分布的工具,它集成到了swift
编译器中。
您一旦设置好Swift包,将ProgressWebViewController添加为依赖项就像将它添加到Package.swift
的dependencies
值一样简单。
dependencies: [
.package(url: "https://github.com/kf99916/ProgressWebViewController.git")
]
CocoaPods
CocoaPods是一个Cocoa项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用CocoaPods将ProgressWebViewController集成到Xcode项目中,请在Podfile
中指定它。
pod 'ProgressWebViewController'
用法
导入
import ProgressWebViewController
集成
ProgressWebViewController
具有WKWebView和导航栏进度条的视图控制器
var url: URL?
请求的URL
var tintColor: UIColor?
进度条、导航栏和工具栏的着色色
var delegate: ProgressWebViewControllerDelegate?
ProgressWebViewController的代理
var scrollViewDelegate: ProgressWebViewControllerScrollViewDelegate?
滚动视图的代理
var bypassedSSLHosts: [String]?
跳过的SSL主机。这些主机还必须在App Transport Security中禁用。
var cookies: [HTTPCookie]?
分配的Cookie
var headers: [String: String]?
自定义头
var userAgent: String?
自定义用户代理
var urlsHandledByApp: [String: Any]
配置由其他应用处理的应用URL(默认 { "hosts": ["itunes.apple.com"], "schemes": ["tel", "mailto", "sms"], "_blank": true }
)
var websiteTitleInNavigationBar = true
在导航栏中显示网站标题
var doneBarButtonItemPosition: NavigationBarPosition
完成栏按钮项的位置。如果控制器被呈现,则自动添加完成栏按钮项(默认 .left
)
var leftNavigaionBarItemTypes: [BarItemType]
配置左侧导航栏的栏按钮项(默认 []
)
var rightNavigaionBarItemTypes: [BarItemType]
配置右侧导航栏的栏按钮项(默认 []
)
var toolbarItemTypes: [BarItemType]
配置导航控制器工具栏中的栏按钮项(默认 [.back, .forward, .reload, .activity]
)
var navigationWay: [NavigationWay]
配置点击链接时的导航方式(默认 .browser
)
var pullToRefresh: Bool
启用/禁用下拉刷新(默认 false
)
子类化
class MyWebViewController: ProgressWebViewController {
override open func loadView() {
super.loadView()
// set up webview, including cookies, headers, user agent, and so on.
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
// Other methods
}
ProgressWebViewControllerDelegate
ProgressWebViewController的代理
可选 func progressWebViewController(_ controller: ProgressWebViewController, canDismiss url: URL) -> Bool
可选 func progressWebViewController(_ controller: ProgressWebViewController, didStart url: URL)
可选 func progressWebViewController(_ controller: ProgressWebViewController, didFinish url: URL)
可选 func progressWebViewController(_ controller: ProgressWebViewController, didFail url: URL, withError error: Error)
可选 func progressWebViewController(_ controller: ProgressWebViewController, decidePolicy url: URL) -> Bool
可选 func initPushedProgressWebViewController(url: URL) -> ProgressWebViewController
ProgressWebViewControllerScrollViewDelegate
滚动视图的代理
可选 func scrollViewDidScroll(_ scrollView: UIScrollView)
BarButtonItemType
按钮项的枚举
enum BarButtonItemType {
case back
case forward
case reload
case stop
case activity
case done
case flexibleSpace
}
NavigationBarPosition
导航栏位置的枚举
enum NavigationBarPosition {
case none
case left
case right
}
NavigationWay
导航方式的枚举
enum NavigationWay {
case browser
case push
}
使用进度webview控制器app
如果你在你的应用中使用 ProgressWebViewController 并希望在此列表中列出,请简单创建一个请求。
我总是很好奇谁在使用我的项目 :)
Hikingbook - by Zheng-Xiang Ke
demo
ProgressWebViewControllerDemo 是一个简单的演示应用,它使用 ProgressWebViewController 浏览苹果网站。
作者
Zheng-Xiang Ke, [email protected]
许可协议
ProgressWebViewController 的使用受到 MIT 许可证的约束。有关更多信息,请参阅 LICENSE 文件。