I believe there’s a component that isn’t utilized often: the Menu, especially on the iPhone. The situation for the iPad, however, is somewhat different. In this post, we’ll take a closer look at this component.
When we select the Menu component from the list of components, the code will look something like this:
Menu("Menu") {
Text("Menu Item 1")
Text("Menu Item 2")
Text("Menu Item 3")
}
It’s a list of elements that aren’t ‘clickable’, but we’re looking for something interactive. In the menu, we can insert any element we desire. In this case, we will add three buttons: the first will allow us to open a Color Picker, while the other two will do nothing.
Menu("Menu") {
Button(action: {
presentColorPicker.toggle()
}) {
Label(
title: { Text("Color") },
icon: { Image(systemName: "eyedropper.full")}
)
}
Button("Option 1") {
}
Button("Option 2") {
}
}
To display:

Now, let’s take a look at the entire code. By selecting a color, the background color of the screen will change.
struct ContentView: View {
@State var colorSelected = Color.white
@State var presentColorPicker = false
var body: some View {
NavigationStack {
ZStack {
Color(colorSelected)
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
}
.background(colorSelected)
.toolbar {
Menu("Menu") {
Button(action: {
presentColorPicker.toggle()
}) {
Label(
title: { Text("Color") },
icon: { Image(systemName: "eyedropper.full")}
)
}
Button("Option 1") {
}
Button("Option 2") {
}
}
}
}.sheet(isPresented: $presentColorPicker) {
ColorPicker("Select a Color", selection: $colorSelected)
.padding()
}
}
}
Consider incorporating this component into your next app.
Note: English is not my native language, so I apologize for any errors. I use AI solely to generate the banner of the post; the content is human-generated.