Swiftpack.co - HonQii/ContextMenuModifier as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by HonQii.
HonQii/ContextMenuModifier 1.0.0
Simply convert UIContextMenuInteraction to SwiftUI Modifier
⭐️ 9
🕓 2 years ago
iOS
.package(url: "https://github.com/HonQii/ContextMenuModifier.git", from: "1.0.0")

ContextMenuModifier

Simply convert UIContextMenuInteraction to SwiftUI Modifier

Usage

import the package in the file you would like to use it: import ContextMenuModifier

You can use it as system .contextMenu modifier

Display custom view as context menu preview

custom preview

code:

Text("Popup custom preview!")
    .previewContextMenu(preview: VStack {
        Image(systemName: "face.smiling")
            .font(.largeTitle)
            .foregroundColor(Color(UIColor.systemYellow))
        Text("This is another preview content")
    }, actions: [
        UIAction(title: "Only Title", handler: { _ in }),
        UIAction(title: "Title with image", image: UIImage(systemName: "plus"), handler: { _ in }),
        UIAction(title: "Desctructive action", attributes: .destructive, handler: { _ in })
    ])

Display destination as preview

destination view

code:

Text("Popup destination as preview!")
    .previewContextMenu(destination: Text("This is destination view"), actions: [
        UIAction(title: "Only Title", handler: { _ in }),
        UIAction(title: "Title with image", image: UIImage(systemName: "plus"), handler: { _ in }),
        UIAction(title: "Desctructive action", attributes: .destructive, handler: { _ in })
    ])

Custom context preview and destination

preview and destination

code:

Text("Popup custom preview and destination!")
    .previewContextMenu(
        destination: Text("This is custom destination view"),
        preview: VStack {
            Image(systemName: "face.smiling")
                .font(.largeTitle)
                .foregroundColor(Color(UIColor.systemYellow))
            Text("This is another preview content")
        },
        actions: [
            UIAction(title: "Only Title", handler: { _ in }),
            UIAction(title: "Title with image", image: UIImage(systemName: "plus"), handler: { _ in }),
            UIAction(title: "Desctructive action", attributes: .destructive, handler: { _ in })
        ]
    )

Custom preferred size for preview

preferred size preview
Text("Custom Preview and destination with custom size!")
    .previewContextMenu(
        destination: VStack {
            Image(systemName: "face.smiling")
                .font(.largeTitle)
                .foregroundColor(Color(UIColor.systemYellow))
            Text("This is another preview content")
        },
        preview: Text("This is another preview content"),
        preferredContentSize: .init(width: 200, height: 200),
        actions: [
            UIAction(title: "Only Title", handler: { _ in }),
            UIAction(title: "Title with image", image: UIImage(systemName: "plus"), handler: { _ in }),
            UIAction(title: "Desctructive action", attributes: .destructive, handler: { _ in })
        ]
    )

Popup destination view as sheet

sheet destination

code:

Text("Popup destination as sheet")
    .previewContextMenu(
        destination: VStack {
            Image(systemName: "face.smiling")
                .font(.largeTitle)
                .foregroundColor(Color(UIColor.systemYellow))
            Text("This is another preview content")
        },
        preview: Text("This is another preview content"),
        presentAsSheet: true,
        actions: [
            UIAction(title: "Only Title", handler: { _ in }),
            UIAction(title: "Title with image", image: UIImage(systemName: "plus"), handler: { _ in }),
            UIAction(title: "Desctructive action", attributes: .destructive, handler: { _ in })
        ]
    )

GitHub

link
Stars: 9
Last commit: 2 years ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics