一个易于使用的 UI 组件,用于向用户显示简短、瞬时的消息。
此框架允许您向应用程序添加瞬时的应用内消息。多个消息将使用流畅的动画堆叠。消息可以完全自定义主题,并且可以设置为在指定的时间间隔后过期,或保持在屏幕上直到被关闭。
Y—Snackbar 在 Apache 2.0 许可下获得许可。
文档自动从源代码注释生成,并呈现为托管在 GitHub Pages 上的静态网站:https://yml-org.github.io/ysnackbar-ios/
Snack
是一个模型,表示要呈现给用户的浮动临时警报或消息。它包含以下内容:
alignment
:Snack 视图的对齐方式。默认为 SnackbarManager.defaultAlignment
。title
:Snack 视图的标题。这是一个可选字符串,默认为 nil。message
:要由 SnackView
显示的消息。类型为 String
。reuseIdentifier
:用于标识 Snack 的字符串。类型为 String?
,默认为 nil。icon
:要作为 Snack 视图的一部分显示的小图像。类型为 UIImage?
,默认为 nil。duration
:Snack 将被显示的总时长。默认为 4 秒。appearance
:设置 SnackView
的外观。默认为 .default
。voRequiresInteraction
:语音旁白是否需要交互。默认为 'false'。如果两个 Snack 的 reuseIdentifier
相等,或者两个 Snack 的 title
和 message
相等,则认为它们相等。这得益于 Snack 符合 Equatable
和 Hashable
协议。
💡 如果 Snack 的 duration
为 .nan
或 .zero
,则 Snack 将永远存在(直到您滑动以将其关闭)。
SnackView
是一个视图,将通过 SnackbarManager
呈现给用户。视图的内容使用 Snack
模型对象填充。它有一个初始化程序:
init(snack: Snack)
snack
数据模型初始化 SnackView
。客户端可以通过设置 appearance
在创建 Snack
时修改或设置 SnackView
的外观。 这将允许客户端修改以下属性:
title (标题)
:
textColor
和 typography
组成的元组。(.label, .systemLabel.bold)
。message (消息)
:
textColor
和 typography
组成的元组。(.label, .systemLabel)
。backgroundColor (背景颜色)
:
systemBackground
。borderColor (边框颜色)
:
.label
。borderWidth (边框宽度)
:
0
。elevation (海拔)
:
Appearance.elevation
。layout (布局)
:
Layout()
。如何从 Snack
获取 SnackView
?
func getSnackAssociatedView() -> SnackUpdatable
Snack
模型对象更新的任何对象。SnackView
使用它来使用新信息更新现有视图。所有小吃都由 SnackbarManager
管理。
defaultAlignment (默认对齐方式)
.top
class func add(snack: Snack)
使用作为参数传递的 Snack 创建 Snack 视图以显示 Snack。
根据对齐方式,重复的 Snack 将被更新并推到底部或顶部。
class func remove(snack: Snack)
SnackContainerView
将被关闭。class func remove(snack: Snack)
操作。duration
时。客户端可以通过设置类型为 SnackbarManager.Appearance
的 appearance
属性来控制或修改 SnackbarManager
的动画持续时间、间距等。 这将允许客户端修改以下属性:
addAnimation (添加动画)
:
rearrangeAnimation (重新排列动画)
:
removeAnimation (移除动画)
:
snackSpacing (小吃间距)
:
contentInset (内容边距)
:
maxSnackWidth (最大小吃宽度)
:
每个添加的 Snack 都具有以下默认功能:
导入框架
import YSnackbar
创建 Snack
func makeSnack() -> Snack {
Snack(
alignment: .bottom,
title: "Network Reachable",
message: "You are currently online.",
reuseIdentifier: "yml.co",
icon: UIImage(named: "wifi"),
duration: 8.0
)
}
添加 Snack
// Creates a snack using `SnackbarManager.defaultAlignment = .top`
let snack = Snack(message: "No network")
// Adds to the top of the screen
SnackbarManager.add(snack: snack)
// Creates a snack with bottom alignment
let snack = Snack(alignment: .bottom, message: "Copied to clipboard")
// Adds to the bottom of the screen
SnackbarManager.add(snack: snack)
// Set `SnackbarManager.defaultAlignment` to bottom
SnackbarManager.defaultAlignment = .bottom
// Creates a snack using defaultAlignment.
let snack = Snack(message: "Copied to clipboard")
// Adds to the bottom of the screen
SnackbarManager.add(snack: snack)
移除 Snack
let snack = Snack()
SnackbarManager.remove(snack)
创建自定义 Snack
final class ImageSnack: Snack {
convenience init(named: String) {
self.init(message: named, reuseIdentifier: "co.yml.page")
}
override func getSnackAssociatedView() -> SnackUpdatable {
SnackImageView(snack: self)
}
}
final class SnackImageView: UIImageView {
private(set) var snack: Snack
required init(snack: Snack) {
self.snack = snack
super.init(image: UIImage(named: snack.message))
setUp()
}
required init?(coder: NSCoder) { nil }
private func setUp() {
self.contentMode = .scaleAspectFit
}
}
extension SnackImageView: SnackUpdatable {
func update(_ snack: Snack) {
self.image = UIImage(named: snack.message)
self.snack = snack
}
}
Y—Snackbar 依赖于我们的 Y—CoreUI 和 Y—MatterType 框架(两者也都是开源的,并采用 Apache 2.0 许可)。
您可以通过将其添加为包依赖项来将 Y—Snackbar 添加到 Xcode 项目。
brew install swiftlint
sudo gem install jazzy
克隆 repo 并在 Xcode 中打开 Package.swift
。
我们使用 语义版本控制。
{major}.{minor}.{patch}
例如
1.0.5
我们为我们的框架采用简化的分支策略。
main
。main
分支出来。main
。main
会为每个版本更新的 # 标签。feature/{ticket-number}-{short-description}
bugfix/{ticket-number}-{short-description}
例如
feature/CM-44-button
bugfix/CM-236-textview-color
在提交拉取请求之前,您应该:
swiftlint
并确认没有违规。jazzy
并确认您有 100% 的文档覆盖率。git rebase -i HEAD~{commit-count}
将你最后的 {commit-count} 个提交合并为功能块。main
)的 HEAD 自你创建分支以来已更新,请使用 git rebase main
来 rebase 你的分支。当提交拉取请求时:
当合并拉取请求时:
1.0.5
)。您可以使用 Terminal 中的以下命令直接从源代码生成自己的本地文档集。
jazzy
这将在 /docs
下生成一组文档。 默认配置在默认配置文件 .jazzy.yaml
文件中设置。
要查看其他文档选项,请键入:
jazzy --help
每次将提交推送到 main
时,GitHub Action 会自动运行,该 Action 运行 Jazzy 以生成我们的 GitHub 页面文档,网址为:https://yml-org.github.io/ysnackbar-ios/