Red Alert
Red Alert是一个为iOS应用提供全局展示基于UIAlertController
的警告的小型Swift库,类似于已弃用的UIAlertView
。
免责声明
全局展示警告通常不推荐。理想情况下,每个警告都应在原始控制器上下文中展示。然而,一些以UIAlertView
为基础构建的应用可能需要进行大量的重构以完全过渡到基于视图控制器的警告。如果这种重构不可立即实现,Red Alert可以提供一个临时的解决方案,允许在不解决结构问题的同时过渡到不使用UIAlertView
API。
工作原理
Red Alert管理一个临时的覆盖窗口和空视图控制器。警告控制器从此视图控制器中展示。如果请求多个警告,它们将被排队。一旦最后一个警告被关闭,窗口将自动销毁。这种方法类似于新iOS版本中向后兼容展示UIAlertView
实例的实现。
需求
- Xcode 9.0+(使用 Swift 4.0 编写)。为了与 Xcode 8.x 兼容,请使用本库的 1.0.0 版本。
- iOS 8.0+
- 兼容 Objective-C
安装
Carthage
-
将以下行添加到您的
Cartfile
github "vlas-voloshin/RedAlert"
-
按照 Carthage 文档 中概述的说明构建并集成库到您的应用中。
CocoaPods
-
将以下行添加到您的
Podfile
pod 'RedAlert'
-
执行命令:
pod install
。
手动安装
- 下载并复制存储库源文件到您的项目,或将其添加为子模块到您的 git 存储库。
- 将
RedAlert.xcodeproj
拖放到 Xcode 中的项目或工作区。 - 仍然在“通用”选项卡中,Project Settings →
Your Target
,您可能发现 Xcode 在“嵌入的二进制文件”中添加了一个缺失的框架项。暂时删除它。 - 仍在“通用”选项卡中,将
RedAlert.framework
添加到“嵌入的二进制文件”。这应该也会将其添加到“链接的框架和库”中。
使用方法
首先,在您打算使用的源文件中导入 RedAlert
模块。然后选择一种显示方法。
最简单
创建并配置您的 UIAlertController
实例,并在其上调用 presentGlobally()
扩展方法(Objective-C 中的 -ral_presentGlobally
)。
更复杂
除了在警告上调用 presentGlobally()
(Objective-C 中的 -ral_presentGlobally
)之外,还可以调用 presentGlobally(animated:, stateHandler:)
(Objective-C 中的 ral_presentGloballyAnimated:withStateHandler:
)来指定是否应该动画显示,并传递一个可选的闭包以接收关于警告状态的提示。
最灵活
虽然扩展方法使用一个 AlertPresenter
( RALAlertPresenter
)类的高级实例来管理临时窗口并显示警告,但是您也可以创建该类的实例。用首选的窗口级别初始化它,在其警告的生命周期内保留它,并使用其 present(_:, animated:, stateHandler:)
方法来显示警告控制器。
许可
此库可在MIT许可下使用。有关更多信息,请参阅LICENSE
文件。