Toast

iOS 应用程序范围内的用户通知系统。

概述

Toast 被设计为拥有极简的 API,且不会影响现有的界面。 它在自己的 UIWindow 中显示消息,并在最后一条消息消失后自动关闭。

当用户触摸消息时,消息的内容将被复制到剪贴板,并且消息将被关闭。 当用户触摸任何显示的消息之外的区域时,所有可见的消息都将被关闭,并且触摸事件将继续传递到您的应用程序界面。

消息可以从任何线程显示。 Toast 简单地将所有调用异步地分派到主线程。

完全支持从右到左的语言。

浅色 深色
Light theme Dark theme

准备工作

不需要启动时的设置。 显示、关闭和排列屏幕上的消息是完全自动的。

用法

对于大多数常见情况,您可以使用两个预定义的函数。 一个用于成功的事件

Toast.info(
    title: "Request accepted",
    text: "We will contact you within a day."
)

另一个用于失败的事件

Toast.error(
    title: "Authorization error",
    text: "User name or password is incorrect."
)

要显示具有自定义颜色的消息,请使用

Toast.show(
    title: "Package status",
    text: "Transferred to a local agent for delivery.",
    foreground: .white,
    background: .systemTeal,
    touched: .white,
    icon: UIImage(systemName: "shippingbox.fill"),
    accessory: UIImage(systemName: "chevron.forward"),
    timeout: 6,
    tap: {
        // show status page
    }
)

自定义

Toast 将其默认值存储在 Toast/Toast/Config 结构中。 您可以像这样调整它

Toast.set(config: {
    $0.text.font = .preferredFont(forTextStyle: .callout)
    $0.cornerRadius = 16
    $0.shadowOpacity = 0.15

    $0.info.icon = UIImage(systemName: "info.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 32))
    $0.info.timeout = 6

    $0.error.icon = UIImage(systemName: "exclamationmark.triangle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 32))
})

作者

Денис Либит, bteapot@me.com

许可

Toast 在 MIT 许可下可用。 有关更多信息,请参见 LICENSE 文件。