swift 展示无网络view

2020-04-20  本文已影响0人  喵喵粉
  1. xib自定义view,类型:NetworkStateView
image.png
  1. 因为多个界面要使用该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) {
//    }
//}
  1. ViewController根据网络状态显示移出无网络view
if ReachableManager.shared.stateUseless {
    extShowNetworkStateView(vc: self)
}
extRemoveNetworkStateView()
//
// MARK: - NetworkStateViewProtocol
//
extension IdentifyCategoryVC: NetworkStateViewProtocol {
    func networkStateViewReload(_ view: NetworkStateView) {
        loadData()
    }
}
上一篇 下一篇

猜你喜欢

热点阅读