前言介绍
告警提示框(消息提示框)在 App 开发中肯定少不了,除了简单地用来显示提示信息外,有时也会作为一些具有交互功能的选择对话框、输入对话框。通常情况下,我们会使用 iOS 自带的 UIAlertController 组件来实现。
虽然 UIAlertController 使用方便,但样式、功能都有限。本文介绍一个优秀的第三方 Alert 组件:SCLAlertView。
安装配置
(1)从 GitHub 上下载最新的代码:https://github.com/vikmeup/SCLAlertView-Swift
(2)将下载下来的源码包中 SCLAlertView.xcodeproj 拖拽至你的工程中。

(3)工程 -> General -> Embedded Binaries 项,把 SCLAlertView.framework 添加进来。

(4)最后,在需要使用 SCLAlertView 的地方 import 进来就可以了。
import SCLAlertView基本用法
简单的使用样例 1
(1)效果图
点击按钮后在页面上弹出个普通的消息提示框。

(2)样例代码
import UIKit
import SCLAlertView
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func showInfo(_ sender: Any) {
//弹出普通消息提示框
SCLAlertView().showInfo("这个是标题", subTitle: "这个是普通消息提示框正文内容。")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}简单的使用样例 2
除了上面用到的普通消息提示框,SCLAlertView 默认提供如下 7 种不同类别的提示框(分别用不同的颜色和图标表示),我们可以根据不同的场景和通知类型选择相应的样式。
//普通消息提示框
SCLAlertView().showInfo("这个是标题", subTitle: "这个是普通消息提示框正文内容。")
//编辑消息提示框
SCLAlertView().showEdit("这个是标题", subTitle: "这个是编辑消息提示框正文内容。")
//通知消息提示框
SCLAlertView().showNotice("这个是标题", subTitle: "这个是通知消息提示框正文内容。")
//警告提示框
SCLAlertView().showWarning("这个是标题", subTitle: "这个是警告提示框正文内容。")
//错误提示框
SCLAlertView().showError("这个是标题", subTitle: "这个是警告提示框正文内容。")
//成功提示框
SCLAlertView().showSuccess("这个是标题", subTitle: "这个是成功提示框正文内容。")
//等待提示框
SCLAlertView().showWait("这个是标题", subTitle: "这个等待提示框正文内容。")效果图如下:



修改关闭按钮文字
默认情况下,消息框下方的完成(关闭)按钮的标题是“Done”,我们可以通过方法第 3 个参数(closeButtonTitle)修改成其它的。
//成功提示框
SCLAlertView().showSuccess("这个是标题", subTitle: "这个是成功提示框正文内容。",
closeButtonTitle: "确定")
原始的消息弹出方法(showTitle)
不管是 showInfo() 也好,showError() 也好,它们内部实际上调用的都是 showTitle() 方法。只不过在它们内部通过传递不同的图片和颜色,从而显示出不同的样式。
(1)我们也可以直接使用 showTitle() 显示一个自定义的弹出框,代码如下:
**SCLAlertView().showTitle("邮件发送成功", subTitle: "我们将在10个工作日内给您回复。",
timeout: nil, completeText: "确定", style: .info,
colorStyle: 0xffae3e, colorTextButton: 0xFFFFFF,
circleIconImage: UIImage(named: "email.png"),
animationStyle: .topToBottom)**(2)效果图如下:

动态修改提示框内容
提示框弹出后,我们可以通过其返回的 SCLAlertViewResponder 对象来修改提示框内部的标题以及正文内容。
//显示等待提示框
let alertViewResponder = SCLAlertView().showWait("这个是标题", subTitle: "这个是正文内容。")
//修改提示框内容
alertViewResponder.setTitle("修改标题")
alertViewResponder.setSubTitle("修改正文内容")使用代码关闭提示框
提示框弹出后,除了通过点击提示框上的按钮来关闭提示框外。我们还可以在代码中通过其返回的 SCLAlertViewResponder 对象的 close() 方法对其关闭。
//显示等待提示框
let alertViewResponder = SCLAlertView().showWait("这个是标题", subTitle: "这个是正文内容。")
//关闭提示框
alertViewResponder.close()高级用法
修改字体样式
下面我们通过自定义外观样式(放大标题文字,缩小正文文字、按钮文字加粗)来实现一个自定义的提示框组件并使用。

//自定义提示框样式
let appearance = SCLAlertView.SCLAppearance(
kTitleFont: UIFont(name: "HelveticaNeue", size: 22)!, //标题文字字体
kTextFont: UIFont(name: "HelveticaNeue", size: 12)!, //正文文字字体
kButtonFont: UIFont(name: "HelveticaNeue-Bold", size: 14)! //按钮文字字体
)
//使用自定义样式的提示框
let alert = SCLAlertView(appearance: appearance)
//显示提示框
alert.showInfo("这个是标题", subTitle: "这个是普通消息提示框正文内容。")隐藏关闭按钮

//自定义提示框样式
let appearance = SCLAlertView.SCLAppearance(
showCloseButton: false //不显示关闭按钮
)
//使用自定义样式的提示框
let alert = SCLAlertView(appearance: appearance)
//显示提示框
alert.showInfo("这个是标题", subTitle: "这个是普通消息提示框正文内容。")等待一段时间自动关闭提示框
这个常常与上面的隐藏关闭按钮相结合使用,比如提示用户操作成功,但不需要用户手动去关闭这个提示框,它显示个 3 秒钟会自动消失。
//自定义提示框样式
let appearance = SCLAlertView.SCLAppearance(
showCloseButton: false //不显示关闭按钮
)
//使用自定义样式的提示框
let alert = SCLAlertView(appearance: appearance)
//显示提示框(3秒后自定关闭)
let timeout = SCLAlertView.SCLTimeoutConfiguration(timeoutValue: 3) {
print("提示框自动关闭了")
}
alert.showInfo("这个是标题", subTitle: "这个是普通消息提示框正文内容。", timeout: timeout)添加多个按钮

let alertView = SCLAlertView()
alertView.addButton("第一个按钮", target:self, selector:#selector(firstButtonTapped))
alertView.addButton("第二个按钮") {
print("第二个按钮点击")
}
alertView.showSuccess("这个是标题", subTitle: "下面添加了多个按钮", closeButtonTitle: "取消")
//第一个按钮点击事件相应
func firstButtonTapped() {
print("第一个按钮点击")
}隐藏头部图标

//自定义提示框样式
let appearance = SCLAlertView.SCLAppearance(
showCircularIcon: false //隐藏头部图标
)
//使用自定义样式的提示框
let alertView = SCLAlertView(appearance: appearance)
alertView.showSuccess("这个是标题", subTitle: "这个是提示框正文内容。")修改头部图标
下面将提示框头部的图标替换成一个邮件图片。

let alertViewIcon = UIImage(named: "email.png")
SCLAlertView().showSuccess("这个是标题", subTitle: "这个是提示框正文内容。",
circleIconImage: alertViewIcon)添加文本输入框
下面样例中我们在提示框内部添加两个文本输入框,分别用来填写用户名和密码。当点击“确定”按钮后,会将填写的内容打印到控制台上。

let alert = SCLAlertView()
//添加第一个输入框
let textField1 = alert.addTextField("用户名")
//添加第二个输入框
let textField2 = alert.addTextField("密码")
textField2.isSecureTextEntry = true
alert.addButton("确定") {
print(textField1.text!, textField2.text!)
}
alert.showEdit("登录", subTitle: "请输入用户名和密码", closeButtonTitle: "取消")所有的自定义样式
按钮(Button )相关
kButtonFont: UIFont //按钮字体
buttonCornerRadius : CGFloat //按钮圆角
showCloseButton: Bool //是否显示关闭按钮
kButtonHeight: CGFloat //按钮高度图标(Circle Image)相关
showCircularIcon: Bool //是否显示图标
kCircleTopPosition: CGFloat //圆形头部位置
kCircleBackgroundTopPosition: CGFloat //圆形背景头部位置
kCircleHeight: CGFloat //圆形高度尺寸
kCircleIconHeight: CGFloat //图标高度尺寸文字(Text)相关
kTitleFont: UIFont //标题文字字体
kTitleTop:CGFloat //标题文字位置
kTitleHeight:CGFloat //标题文字高度
kTextFont: UIFont //内容文字字体
kTextHeight: CGFloat //内容文字高度
kTextFieldHeight: CGFloat //文本输入框高度
kTextViewdHeight: CGFloat //文本视图高度整个提示框相关
kDefaultShadowOpacity: CGFloat //提示框显示时后面的阴影遮罩背景透明度
kWindowWidth: CGFloat //提示框宽度
kWindowHeight: CGFloat //提示框高度
shouldAutoDismiss: Bool //点击按钮后是否自动关闭提示框
fieldCornerRadius : CGFloat //文本输入框圆角
contentViewCornerRadius : CGFloat //内容视图圆角
disableTapGesture: Bool //是否禁用手势(如果我们添加了一个tableview作为子视图,可以将该属性设为true)
4 条评论
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
结论升华部分可联系更高维度价值观。
反驳对手观点时需更注重逻辑严密性。