当用户点击按钮或导航链接时,很明显,SwiftUI应该触发这些视图的默认操作。但是,如果他们按住某些东西怎么办?在较旧的iPhone上,用户可以通过用力按压某些东西来触发 3D Touch,但是原理是相同的:用户希望与他们进行交互的内容有更多的选择。
SwiftUI允许我们将上下文菜单附加到对象以提供此额外功能,所有这些操作都使用contextMenu()
修饰符完成。您可以为此选择一个按钮,它们将按顺序显示,因此我们可以构建一个简单的上下文菜单来控制视图的背景颜色,如下所示:
struct ContentView: View {
@State private var backgroundColor = Color.red
var body: some View {
VStack {
Text("Hello, World!")
.padding()
.background(backgroundColor)
Text("Change Color")
.padding()
.contextMenu {
Button(action: {
self.backgroundColor = .red
}) {
Text("Red")
}
Button(action: {
self.backgroundColor = .green
}) {
Text("Green")
}
Button(action: {
self.backgroundColor = .blue
}) {
Text("Blue")
}
}
}
}
}
就像TabView
一样,上下文菜单中的每个项目都可以附有文本和图像,同样,无论您以什么顺序提供它们还是尝试提供多个图像都无关紧要——它始终是第一个文本,然后一个图像。
在使用上下文菜单时,我为您提供了一些技巧,以帮助确保您为用户提供最佳体验:
- 如果您要使用它们,请在很多地方使用它们——按住某些东西却什么也没发现可能会令人沮丧。
- 请保持尽可能短的选项列表——以不超过三个为目标。
- 不要重复用户已经可以在用户界面的其他位置看到的选项。
请记住,上下文菜单本质上是隐藏的,因此在将重要操作隐藏在上下文菜单中之前,请三思而后行。
网友评论