SDCAlertView
SDCAlertView
最初是一个与UIAlertView
外观相同的alert,但它支持自定义内容视图。随着iOS 8中引入了UIAlertController
,该项目更新到了更现代的API,即UIAlertController
带来的API。
特点
- 大多数
UIAlertController
功能 - 自定义内容视图
- 阻止控制器在用户点击按钮时关闭
- 易于显示/隐藏
- 属性化标题标签、消息标签和按钮
- 外观定制
- Swift和Objective-C均可使用
- 按钮放置位置合理
- UI测试
- 自定义alert行为
- 支持CocoaPods/Carthage/Swift Package Manager
- 易于队列alert
要求
- Swift 5.0
- iOS 9或更高版本
安装
CocoaPods
使用 CocoaPods 安装 SDCAlertView,将其整合到现有的 Podfile 中或创建一个新的 Podfile
platform :ios, '9.0'
use_frameworks!
target 'MyApp' do
pod 'SDCAlertView'
end
然后运行 pod install
。
Carthage
使用 Carthage 安装,将以下行添加到您的 Cartfile
github "sberrevoets/SDCAlertView"
运行 carthage update
,并将 SDCAlertView.framework
拖至 Build
文件夹中以添加到您的项目中。
Swift Package Manager
使用 Swift Package Manager 安装,将此包添加到项目的 'Swift Packages' 部分。或者将以下行添加到您的 Package.swift
.package(url: "https://github.com/sberrevoets/SDCAlertView.git", from: "12.0.1")
提醒框与操作表单
SDCAlertController
支持显示操作表单,但在使用操作表单时需要考虑一些限制和注意事项
- 它不适合在 iPad 上使用。这是因为 iOS 不支持
UIModalPresentationStyle.Custom
进行适应性显示(例如,从工具栏项中显示操作表单时)。 - 由于 Swift/Objective-C 互操作性中的限制,新
AlertBehaviors
不可用,当从 Swift 使用SDCAlertController
时。这也影响了AlertControllerStyle.Alert
。 - 在将子视图添加到自定义内容视图时,该视图将替换标题和消息标签。
使用方法
SDCAlertView
是用Swift编写的,但可以在Swift和Objective-C中使用。Objective-C中的对应类型名称与Swift中相同,但前面有一个SDC
前缀。
基本功能
let alert = AlertController(title: "Title", message: "This is a message", preferredStyle: .alert)
alert.addAction(AlertAction(title: "Cancel", style: .normal))
alert.addAction(AlertAction(title: "OK", style: .preferred))
alert.present()
// or use the convenience methods:
AlertController.alert(withTitle: "Title", message: "This is a message", actionTitle: "OK")
AlertController.sheet(withTitle: "Action sheet title", "Action sheet message", actions: ["OK", "Cancel"])
自定义内容视图
let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
spinner.translatesAutoresizingMaskIntoConstraints = false
spinner.startAnimating()
let alert = AlertController(title: "Title", message: "Please wait...")
alert.contentView.addSubview(spinner)
spinner.centerXAnchor.constraint(equalTo: alert.contentView.centerXAnchor).isActive = true
spinner.topAnchor.constraint(equalTo: alert.contentView.topAnchor).isActive = true
spinner.bottomAnchor.constraint(equalTo: alert.contentView.bottomAnchor).isActive = true
alert.present()
防止取消显示
let alert = AlertController(title: "Title", message: "This is a message")
alert.addAction(AlertAction(title: "Dismiss", style: .preferred))
alert.addAction(AlertAction(title: "Don't dismiss", style: .normal))
alert.shouldDismissHandler = { $0.title == "Dismiss" }
alert.present()
风格和外观
SDCAlertController
是一个普通视图控制器,因此将tintColor
应用于其view
将使按钮和添加到contentView
中的任何子视图着色。
如果您需要更多自定义,创建AlertVisualStyle
的子类,并在AlertController
实例上使用visualStyle
。您还可以创建一个AlertVisualStyle
的实例,并重写所需的属性(这主要用于从Objective-C中使用)。请注意,在显示提示后,更改这些设置将被忽略。
许可证
SDCAlertView在MIT许可证下分发。