XZToast-可高度自定义的iOS吐司类型提示组件

一、安装

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值