美文网首页
swift 展示无网络view

swift 展示无网络view

作者: 喵喵粉 | 来源:发表于2020-04-20 14:05 被阅读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()
  • 遵守NetworkStateViewProtocol协议
//
// MARK: - NetworkStateViewProtocol
//
extension IdentifyCategoryVC: NetworkStateViewProtocol {
    func networkStateViewReload(_ view: NetworkStateView) {
        loadData()
    }
}

相关文章

网友评论

      本文标题:swift 展示无网络view

      本文链接:https://www.haomeiwen.com/subject/kaarihtx.html