可在 SwiftUI 中显示 NavigationBar 上方弹出窗口的库
FullscreenPopup
该库可以在 SwiftUI 中显示 NavigationBar 上方的弹出窗口
缘由
该库旨在解决在 SwiftUI 中显示自定义警报时遇到的特定难题,尤其是在涉及模态视图时。在标准操作中,开发者可能会使用 ZStack 或 overlay 修饰符来在现有视图上叠加额外的视图。但是,这种方法在涉及模态演示时会暴露出其局限性。
当模态视图处于活动状态时,用 ZStack 或 overlay 叠加的任何附加视图都会限制在模态视图的边界内。这种限制意味着它们无法扩展到整个屏幕,而这通常是自定义警报的关键要求,需要夺取用户的全部注意力,并防止与基础内容进行任何交互。
该库提供了一个解决方案,利用 fullscreenCover 修饰符,以确保无论有任何活动模态视图,都可以将自定义警报显示在整个屏幕上。此方法确保自定义警报不受模态视图边界的限制,从而使其可以完全覆盖背景内容并防止意外交互。
ZStack 或 overlay | 该库 |
---|---|
用法
以下是如何使用它的方法:
import SwiftUI
import FullscreenPopup
public struct ContentView: View {
@State var isPopupPresented = false
public var body: some View {
Button("show popup") {
isPopupPresented = true
}
.popup(isPresented: $isPopupPresented) {
// Your custom popup content
}
}
}
自定义动画
您还可以通过向 .popup 修饰符提供 animation 参数来自定义动画。下面是一个示例:
.popup(isPresented: $isPopupPresented, duration: .seconds(0.5), animation: .easeIn(duration: 0.5)) {
// Your custom popup content
}
警告
duration
参数必须大于 animation
的 duration
。
自定义背景
您还可以自定义在弹出窗口后面显示的背景视图。默认情况下,使用半透明黑色视图。要使用不同的视图,请向 .popup 修饰符提供一个 background 参数:
.popup(isPresented: $isExample1Presented) { isPresented in
LinearGradient(gradient: Gradient(colors: [.blue, .purple]), startPoint: .top, endPoint: .bottom)
.opacity(isPresented ? 0.5 : 0)
} content: {
// Your custom popup content
}
安装
let package = Package(
name: "YourProject",