paint-brush
Context Menus in iOS 18 - #30DaysOfSwiftby@vaibhavdwivedi
121 reads

Context Menus in iOS 18 - #30DaysOfSwift

by VaibhavOctober 25th, 2024
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Today, let's look at Context Menus. A powerful way to offer additional actions when users long-press or right-click on UI elements.
featured image - Context Menus in iOS 18 - #30DaysOfSwift
Vaibhav HackerNoon profile picture

Day 14: Enhancing Interactions with Context ⚙️


Welcome back to the #30DaysOfSwift series!


Today, let's look at Context Menus. A powerful way to offer additional actions when users long-press or right-click on UI elements.

Image description


By integrating context menus into your SwiftUI app, you can create a smooth, intuitive experience for users when interacting with different elements.

What are Context Menus?

  • Context Menus provide additional actions that a user can perform on an element.


  • They are revealed via a long press or right-click, making it easy for users to access additional options without cluttering the UI.


Code Example: Context Menus in Action

struct ContextMenuExample: View {
    @State private var favorite: Bool = false

    var body: some View {
        VStack {
            HStack {
                Text("Long-press me!")
                    .font(.title2)
                    .padding()
                Spacer()
                if favorite {
                    Image(systemName: "heart.fill")
                        .foregroundColor(.red) // Customization: Heart icon if marked as favorite
                }
            }
            .frame(maxWidth: .infinity)
            .padding()
            .background(Color.blue.opacity(0.2)) // Custom background color
            .cornerRadius(10) // Rounded corners for aesthetic touch
            .contextMenu { // Adding the context menu
                Button(action: {
                    favorite.toggle()
                }) {
                    Label("Favorite", systemImage: favorite ? "heart.fill" : "heart")
                }

                Button(action: {
                    print("Shared!")
                }) {
                    Label("Share", systemImage: "square.and.arrow.up")
                }

                Button(action: {
                    print("Deleted!")
                }) {
                    Label("Delete", systemImage: "trash")
                        .foregroundColor(.red) // Custom color for danger actions
                }
            }
        }
        .padding()
    }
}


Now, it's your turn! Try adding context menus to elements in your app to make your interactions more intuitive and user-friendly!


The full series is available on my profile, and the components can also be found at shipios.app/components.


Happy Coding! 🎨