Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/swiftui-plus/presentation
Provides a custom presentation modifier that provides more options including full screen presentations. (iOS)
https://github.com/swiftui-plus/presentation
fullscreen modal present presentation swift swiftui viewcontroller
Last synced: about 2 months ago
JSON representation
Provides a custom presentation modifier that provides more options including full screen presentations. (iOS)
- Host: GitHub
- URL: https://github.com/swiftui-plus/presentation
- Owner: SwiftUI-Plus
- License: mit
- Created: 2021-08-28T21:51:51.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-07-06T21:53:44.000Z (over 2 years ago)
- Last Synced: 2024-05-01T14:05:05.229Z (8 months ago)
- Topics: fullscreen, modal, present, presentation, swift, swiftui, viewcontroller
- Language: Swift
- Homepage: https://benkau.com/packages.json
- Size: 24.4 KB
- Stars: 18
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
![ios](https://img.shields.io/badge/iOS-13-green)
----
> An improved backport is now available as a set of `.backport.presentation` modifiers, in a single Backports library, with a LOT more additions. This should simply my efforts and allow me and others to contribute more backports in the near future.
> [SwiftUI Backports](https://github.com/shaps80/SwiftUIBackports)----
# Presentation
> Also available as a part of my [SwiftUI+ Collection](https://benkau.com/packages.json) – just add it to Xcode 13+
Provides a custom presentation modifier that provides more options including full screen presentations.
## Features
Presentation allows the configuration of the following properties:
- UIModalTransitionStyle
- UIModalPresentationStyle
- isModalInPresentation
- Easy API for presenting SwiftUI from UIKit## Example
Sheet replacement in SwiftUI with a custom environment value:
```swift
struct Presenting: View {
@State private var presentSheet: Bool = false
@State private var presentFullscreen: Bool = falsevar body: some View {
VStack(spacing: 20) {
Button {
presentSheet = true
} label: {
Text("Present Modal")
}
.present(isPresented: $present) { Presented() }Button {
presentFullscreen = true
} label: {
Text("Present Fullscreen")
}
.present(isPresented: $present, style: .fullscreen) { Presented() }
}
}
}struct Presented: View {
@Environment(\.presentation) private var presentation // note this is __not__ `presentationMode`
var body: some View {
Button {
presentation.wrappedValue.dismiss() // but it has an identical API
} label: {
Text("Dismiss")
}
}
}
```Present from UIKit with a convenient and familiar API:
```swift
controller.present(Presented())
```## Installation
The code is packaged as a framework. You can install manually (by copying the files in the `Sources` directory) or using Swift Package Manager (**preferred**)
To install using Swift Package Manager, add this to the `dependencies` section of your `Package.swift` file:
`.package(url: "https://github.com/SwiftUI-Plus/Presentation.git", .upToNextMinor(from: "1.0.0"))`
> Note: The package requires iOS v13+
## Other Packages
If you want easy access to this and more packages, add the following collection to your Xcode 13+ configuration:
`https://benkau.com/packages.json`