CocoaPods trunk is moving to be read-only. Read more on the blog, there are 19 months to go.

PopupUI 1.0.5

PopupUI 1.0.5

Maintained by pikacode.



PopupUI 1.0.5

  • By
  • pikacode

PopupUI

Easy to pop up any view written with SwiftUI!

SwiftUI 实现的弹窗控件,简单易用!《中文文档》

SwiftUI で作られた PopupView は、簡単で使いやすいです!『日本語のREADME』

Screenshot

        

Installation

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/pikacode/PopupUI.git")
]

Cocoapods

pod 'PopupUI'

Usage

import PopupUI

Basic Usage

1.Adding

Add .popupUI() after a view to pop up within it's scope:

var body: some View {
    VStack {
        ...
    }
    .popupUI()  // <-- Add to the view
}

Or add to the root view, only once to pop up throughout the entire application:

@main
struct PopupUI_demoApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .popupUI()  // <-- Add to the root view
        }
    }
}

2.Showing

PopupUI
    .show(Text("Hello, PopupUI!"))

3.Hiding

PopupUI
    .hide()     // <-- Hide the last popup 

Advanced Usage

Show with custom parameters

Customize various parameters:

PopupUI
    .show(YourCustomView())                 // <-- The view to be shown
    .from(.bottom)                          // <-- The direction from which the view is shown
    .stay(2)                                // <-- The duration of the view staying
    .to(.center, .easeOut(duration: 0.3))   // <-- The direction to which the view is hidden and the animation
    .background(Color.black.opacity(0.3))   // <-- The background view
    .padding(24)                            // <-- The padding of the view
    .isSafeArea(true)                       // <-- Whether to avoid the safe area
    .id("Unique Popup ID")                  // <-- The unique identifier, when not passed, the same id is used by default, so only one popup can be displayed at a time, you can display multiple popups at the same time by setting different ids
    .isAvoidKeyboard(true)                  // <-- Whether to avoid the keyboard
    .isOpaque(true)                         // <-- Whether to prevent the user from interacting with the background view
    .dismissWhenTapBackground(true)         // <-- Whether to hide when the background view is tapped
    .dismissCallback { id in                // <-- The callback when the view is hidden
        print("Popup dismissed: \(id)")
    }

Or display a view and customize the parameters through the closure:

PopupUI
    .show {
        VStack {
            ...
        }
    } config: { config in
        config.from = ...
    }

Hide a specified popup

PopupUI
    .hide("Unique Popup ID")    // <-- Hide the specified popup

Global Configuration

Customize the default parameters through PopupConfiguration.default to simplify the popup code:

let configuration = PopupConfiguration()
configuration.stay = 2
configuration.to = .center
...
PopupConfiguration.default = configuration

Or:

PopupConfiguration
    .default
    .stay(2)
    .to(.center)
    ...