SwiftUI:contextMenu 菜单

时间:2022-07-25
本文章向大家介绍SwiftUI:contextMenu 菜单,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

当用户点击按钮或导航链接时,很明显,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一样,上下文菜单中的每个项目都可以附有文本和图像,同样,无论您以什么顺序提供它们还是尝试提供多个图像都无关紧要——它始终是第一个文本,然后一个图像。

在使用上下文菜单时,我为您提供了一些技巧,以帮助确保您为用户提供最佳体验:

  1. 如果您要使用它们,请在很多地方使用它们——按住某些东西却什么也没发现可能会令人沮丧。
  2. 请保持尽可能短的选项列表——以不超过三个为目标。
  3. 不要重复用户已经可以在用户界面的其他位置看到的选项。

请记住,上下文菜单本质上是隐藏的,因此在将重要操作隐藏在上下文菜单中之前,请三思而后行。

译自 Creating context menus