一、安装
1、使用 Swift Package Manager 集成
Xcode
-> File
-> Add Package Dependencies...
-> Search or Enter Package URL
https://github.com/Xezun/XZKit.git
2、使用 CocoaPods 集成
pod "XZToast"
二、如何使用
1、展示
XZToast 基于控制器展示,所以如下代码的执行环境,都是在控制器的方法中,即self
表示的是控制器。
[self xz_showToast:[XZToast messageToast:@"提示消息"] duration:3.0 position:(XZToastPositionBottom) exclusive:NO completion:^(BOOL finished) {
// do something
}];
方法名针对 Swift 进行了优化,不用写xz_
前缀,且对于文本类型的提示消息,可以直接通过字符串字面量,比如下面两种写法的作用相同。
// Swift 支持使用字符串字面量构造 .message 类型的吐司提示消息
showToast("提示消息", duration: 3.0, position: .bottom, exclusive: false) { _ in
// do something
}
// 使用便利构造方法
showToast(.message("提示消息"), duration: 3.0, position: .bottom, exclusive: false) { _ in
// do something
}
方法参数说明:
- toast: 待展示的 XZToast 对象
- duration: 展示时长,默认 1.0 秒
- position: 展示位置,默认 middle 中间
- exclusive: 是否独占,默认否;独占的提示消息展示时,会阻止展示新的 toast 消息
- completion: 结束展示的回调
2、隐藏或移除
隐藏指定提示消息。请注意,吐司提示消息对象会直接移除并销毁,而不仅是隐藏。
hideToast(toast, completion: {
// do something
})
方法hideToast
两个参数都是可选的,如果要隐藏所有提示消息,只需要把toast
参数传 nil 即可。
此外还可以通过 showToast
方法的返回值,执行 hide
方法来隐藏指定提示消息。
let toast = showToast(.message("提示消息"))
toast?.hide({
// do something
})
方法 showToast
的返回值,是管理提示消息的ToastTask
对象,而非参数中toast
对象。
3、效果示例
- 3.1、展示位置:支持上、中、下
showToast("请稍后", duration: 3.0, position: .top)
showToast("请稍后", duration: 3.0, position: .middle)
showToast("请稍后", duration: 3.0, position: .bottom)
![]() | ![]() | ![]() |
- 3.2、内置样式
showToast(.success("操作成功"))
showToast(.failure("操作失败"))
showToast(.waiting("即将开始"))
showToast(.warning("即将到期"))
showToast(.loading("正在加载"))
showToast(.loading("正在加载", progress: 0.5))
// 准备加载
loadingToast = showToast(.loading("加载中"));
// 加载中,更新进度
do {
loadingToast?.progress = 0.5
}
// 加载完成
loadingToast?.hide()
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
-
3.3、支持样式配置
-
maximumNumberOfToasts
: 数量控制 -
textColor
: 文本颜色 -
font
: 文本字体 -
backgroundColor
: 背景颜色 -
shadowColor
: 投影颜色 -
color
: 进度颜色 -
trackColor
: 进度轨道颜色 -
setOffset(_:for:)
: 设置偏移值 -
setNeedsLayoutToasts/layoutToastsIfNeeded
: 刷新消息布局
// 默认样式,生效范围:所有控制器
XZToast.font = .systemFont(ofSize: 15)
XZToast.textColor = .red
XZToast.shadowColor = .red
XZToast.backgroundColor = .white
XZToast.maximumNumberOfToasts = 3
XZToast.setOffset(-2, for: .bottom)
// 指定样式,生效范围:当前控制器
let config = self.toastConfiguration
config.font = .systemFont(ofSize: 15)
config.textColor = .red
config.shadowColor = .red
config.backgroundColor = .white
config.maximumNumberOfToasts = 3
config.setOffset(-50, for: .bottom)
- 3.4、支持数量控制
toastConfiguration.maximumNumberOfToasts = 3

- 支持“单例”模式
单例模式下,展示新的吐司提示时,会直接复用已有的吐司视图。
showToast(.shared(.success, text: "操作成功"))
showToast(.shared(.failure, text: "操作失败"))
showToast(.shared(.waiting, text: "即将开始"))
showToast(.shared(.warning, text: "即将到期"))

- 支持自定义视图
任意视图都可以作为吐司提示的内容。
let button = UIButton.init(type: .system)
button.titleLabel?.font = .systemFont(ofSize: 17.0, weight: .bold)
button.layer.cornerRadius = 5.0
button.clipsToBounds = true
button.backgroundColor = UIColor.orange
button.setTitleColor(.white, for: .normal)
button.setTitle("点击这里", for: .normal);
button.contentEdgeInsets = .init(top: 15, left: 15, bottom: 15, right: 15)
button.addTarget(self, action: #selector(onClickFloatAdsToast(_:)), for: .touchUpInside)
showToast(.view(button), duration: 0, position: .bottom)
