🍞
Loaf
Loaf 是一个易于使用 iOS Toast 的 Swift 框架
受 Android 的 Toast 启发,
用法
从任何视图控制器中,可以通过调用以下内容来显示 Loaf
Loaf("Message goes here", sender: self).show()
这将产生以下效果
下面,我将讨论如何进一步自定义您的 Loaf!
游乐场
我已经提供了一个示例项目以展示 Loaf 的用法!只需克隆此仓库,然后打开 LoafExamples.xcodeproj
。从这里,您可以在 Examples.swift
中查看和实验自定义 Loaf 风格。
自定义
基本样式
Loaf自带4种基本样式。
成功 | 错误 |
---|---|
![]() |
![]() |
警告 | 信息 |
---|---|
![]() |
![]() |
可以在 style
属性中指定这些样式。例如,要使用带 成功
样式的Loaf,调用方式如下
Loaf("This is a success loaf", state: .success, sender: self).show()
自定义样式
Loaf允许您指定自定义样式!这样可以设置颜色、字体、图标及其对齐方式。以下是一些自定义Loaf样式的示例!
颜色和图标 | 图标右对齐 | 无图标 |
---|---|---|
![]() |
![]() |
![]() |
所有这些属性都是作为自定义状态的一部分指定的,如下所示
Loaf("Switched to light mode", state: .custom(.init(backgroundColor: .black, icon: UIImage(named: "moon"))), sender: self).show()
显示和消失
Loaf允许您指定显示和消失方向。显示方向与消失方向无关。以下是一些示例
垂直 | 左 |
---|---|
![]() |
![]() |
右 | 混合 |
---|---|
![]() |
![]() |
这些在函数签名中指定,如下所示
Loaf("Loaf message", presentingDirection: .left, dismissingDirection: .vertical, sender: self).show()
位置
Toast通常在屏幕底部显示,但Loaf也允许您在屏幕顶部显示。下面是一个在视图顶部显示的Loaf示例
这也在函数签名中指定,如下所示
Loaf("Loaf message", location: .top, sender: self).show()
其他
指定展示时长。在展示Loaf时使用.show()
,可以指定展示时长。默认值为4秒,但预设了2秒和8秒的值。这可以通过使用.show(.short)
来指定2秒,或者使用.show(.long)
指定8秒。也可以使用.show(.custom(x))
来指定自定义时长,其中x表示秒数。
0.5.0
- 可以在Loaf的
show()
函数签名中指定完成处理程序。当消失动画完成后或当Loaf被轻触时,该块将被调用。现在通过枚举传递给完成处理程序,表示Loaf是被轻触还是超时。以下是一个使用完成处理程序的示例
Loaf(example.rawValue, sender: self).show { dismissalType in
switch dismissalType {
case .tapped: print("Tapped!")
case .timedOut: print("Timmed out!")
}
}
- 可以通过
Style
组件指定Loaf的宽度。宽度可以指定为固定大小(例如:280px)或屏幕宽度的百分比(例如:0.8
-> 80%)。以下是示例用法
Loaf(example.rawValue, state: .custom(.init(backgroundColor: .black, width: .screenPercentage(0.8))), sender: self).show()
- 尽可能在标签栏上方展示Loaf。
- 可以通过全局方法手动消失Loaf。
Loaf.dismiss(sender: self) // Where `self` is the Loaf's presenter
安装
Cocoapods
Loaf已在Cocoapods上。在您的项目中配置Cocoapods后,只需将以下内容添加到您的Podfile中
pod 'Loaf'
然后从包含Podfile的目录中运行pod install
!
不要忘记在每个您想使用Loaf的文件中包含import Loaf
要求
- Swift 4.2+
- iOS 9.0+
贡献
欢迎提交pull请求、功能请求和错误报告
感谢@kirkbyo在困难的部分给予我帮助
用