Easily to present different popups from any subview over fullscreen on SwiftUI.
- present different popups of different classes without pre-declaration
- possible to start presenting from any subview or part of code
- present over full screen (or part of screen you really need)
- present several popups
- no need a flag or constants
- supports animations
Swift Package Manager:
https://github.com/Jnis/ZPopupPresenter.git
- Make a shared PresenterModel (ex. by using environment property)
- Add ZPopupPresenterView as overlay of your root view
import ZPopupPresenter
struct ContentView: View {
let zPopupPresenterModel = ZPopupPresenterModel() // 1.1. shared model
var body: some View {
MyView()
.environmentObject(zPopupPresenterModel) // 1.2. inject model for subviews
.overlay {
ZPopupPresenterView(model: zPopupPresenterModel) // 2. popups place
}
}
}
- call
showPopup
method of shared model and wrap your view withAnyView( ... )
- call
close
closure to remove popup
struct MyView: View {
@EnvironmentObject var zPopupPresenterModel: ZPopupPresenterModel // shared model
var body: some View {
VStack {
Button("Show Popup", action: {
zPopupPresenterModel.showPopup({ close in // 3.
AnyView(
DemoPopup1View(closeBlock: close) // 4.
)
})
})
}
}
}
You can find more examples inside /Examples
folder.
MIT