- 用
xib
自定义view
,类型:NetworkStateView

image.png
- 因为多个界面要使用该view,就统一在
UIViewController
的扩展中提供显示、移出
2个方法
//
// MARK: - 网络监测
//
fileprivate var kNetworkName: String = "kNetworkName"
extension UIViewController {
fileprivate var vNetwork: NetworkStateView? {
set {
objc_setAssociatedObject(self, &kNetworkName, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
get {
return objc_getAssociatedObject(self, &kNetworkName) as? NetworkStateView
}
}
///无网络,vc遵守NetworkStateViewProtocol协议
func extShowNetworkStateView(vc: UIViewController & NetworkStateViewProtocol) {
vNetwork = NetworkStateView.loadUseXibName()
vNetwork?.frame = self.view.bounds
vNetwork?.delegate = vc
view.addSubview(vNetwork!)
}
///移出
func extRemoveNetworkStateView() {
vNetwork?.delegate = nil
UIView.animate(withDuration: kAnimateTime, animations: {
self.vNetwork?.alpha = 0.1
}) { (done) in
self.vNetwork?.removeFromSuperview()
}
}
}
////
//// MARK: - NetworkStateViewProtocol
////
//extension UIViewController: NetworkStateViewProtocol {
// func networkStateViewReload(_ view: NetworkStateView) {
// }
//}
-
ViewController
根据网络状态显示移出无网络view
if ReachableManager.shared.stateUseless {
extShowNetworkStateView(vc: self)
}
extRemoveNetworkStateView()
- 遵守
NetworkStateViewProtocol
协议
//
// MARK: - NetworkStateViewProtocol
//
extension IdentifyCategoryVC: NetworkStateViewProtocol {
func networkStateViewReload(_ view: NetworkStateView) {
loadData()
}
}
网友评论