简介
ReachabilityUI 是一个旨在帮助通知用户应用程序与互联网断开连接的框架。
使用 ReachabilityUI,您可以注册一个 ReachabilityListener
实例,以便在连接断开时收到通知。这可以用来调整应用程序的界面,以确保内容不会重叠横幅,或者在实际断开连接时执行任何其他操作。
请参考演示项目,了解如何在类似于 Nodes VIPER 架构中集成 ReachabilityUI 框架。
📝 要求
- iOS 11
- Swift 4.0+
📦 安装
Carthage
github "nodes-ios/Reachability-UI"
Cocoapods
pod "Reachability-UI"
💻 用法
初始化 ReachabilityUI 依赖项
遵守 HasReachabilityListenerRepository
并创建一个 ReachabilityUIManager
实例
import UIKit
import ReachabilityUI
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
public var reachabilityListenerFactory: ReachabilityListenerFactoryProtocol!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
reachabilityListenerFactory = ReachabilityUIManager()
return true
}
}
extension AppDelegate: HasReachabilityListenerRepository {}
初始化可达性UI横幅
要启用您的视图中可达性横幅,请将以下代码片段添加到您的AppDelegate.swift
private func addReachability() {
// create a ReachabilityConfiguration instance
let configuration = ReachabilityConfiguration(title: "Connected",
noConnectionTitle: "No Connection",
options: nil)
// create the ReachabilityCoordinator and pass it along the previously
// created ReachabilityConfiguration together with the ReachabilityListenerFactoryProtocol
let coordinator = ReachabilityCoordinator(
window: window,
reachabilityListenerFactory: reachabilityListenerFactory,
configuration: configuration
)
reachabilityCoordinator = coordinator
coordinator.start()
}
监听可达性变化
要接收关于连接状态变化的通知,您必须创建一个监听器
并开始监听,以接收关于连接状态变化的通知。
private var listener: ReachabilityListenerProtocol!
func subscribe() {
listener = reachabilityListenerFactory.makeListener()
listener.listen { [weak self] (isConnected) in
// TODO: react to change in connected state
}
}
更改配置
您可以在可达性配置
中更改各种选项,以根据您的需求定制组件。
let configuration = ReachabilityConfiguration(title: "Connected",
noConnectionTitle: "No Connection",
options: [.appearance : ReachabilityConfiguration.Appearance.bottom,
.appearanceAdjustment : CGFloat(-100),
.animation : ReachabilityConfiguration.Animation.slideAndFadeInOutFromBottom])
在选项
字典中可以使用以下键
.titleColor
(必须是UIColor
).noConnectionTitleColor
(必须是UIColor
).noConnectionBackgroundColor
(必须是UIColor
).backgroundColor
(必须是UIColor
).height
(必须是CGFloat
).font
(必须是UIFont
).textAlignment
(必须是NSTextAlignment
).animation
(必须是可达性配置.Animation
).appearance
(必须是可达性配置.Appearance
).appearanceAdjustment
(必须是CGFloat
)
如果选项设置为nil
,将使用默认选项。设置的任何选项将覆盖默认状态。
👥 致谢
使用
可达性逻辑是由Marco Santarossa在https://medium.com/@marcosantadev/network-reachability-with-swift-576ca5070e4b中展示的
📄 许可证
可达性-UI可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。