弹出窗口展示变得简单
立即创建美丽、完全可自定义的弹出窗口。保持您的代码整洁
PopupView是一个免费的开源库,专门用于SwiftUI,使弹出窗口的展示过程更加简单和更干净。
- 提升代码质量。 使用
showAndStack()
或showAndReplace()
方法展示弹出窗口。
使用dismiss()
隐藏选定的之一。简单无比。 - 创建任何弹出窗口。 我们知道自定义是多么重要;这就是为什么我们给您机会以您喜欢的方式设计弹出窗口。
- 专为SwiftUI设计。 在开发库时,我们利用SwiftUI的力量,为您提供强大的工具来加快您的实现过程。
入门
✋ 要求
平台 | 最低Swift版本 |
---|---|
iOS 14+ | 5.0 |
PadOS 14+ | 5.0 |
macOS 12+ | 5.0 |
tvOS 15+ | 5.0 |
⏳ 安装
Swift包管理器
Swift包管理器是一个工具,用于自动化Swift代码的分布,并集成到Swift编译器中。
一旦您有了Swift包设置,将PopupView作为依赖项添加,就像将其添加到Package.swift
的dependencies
值中一样简单。
dependencies: [
.package(url: "https://github.com/Mijick/PopupView.git", branch(“main”))
]
CocoaPods
CocoaPods是Swift和Objective-C Cocoa项目的依赖项管理器,可帮助优雅地扩展它们。
安装步骤
- 安装CocoaPods 1.10.0(或更高版本)
- 为您的项目生成CocoaPods
pod init
- 将CocoaPods依赖项添加到您的
Podfile
pod 'MijickPopupView'
- 安装依赖项并生成
.xcworkspace
文件
pod install
- 使用新的XCode项目文件
.xcworkspace
用法
1. 设置库
在您的@main
结构中调用implementPopupView
方法。它接受一个可选参数 - config,可以用于为应用程序中的所有弹出窗口配置一些修饰符。
var body: some Scene {
WindowGroup(content: ContentView().implementPopupView)
}
2. 声明您的弹出窗口结构
库提供了一种能力,在三个预先定义的位置展示您的自定义视图 - 顶部、中心和底部。
为了展示它,它需要在您的视图声明期间确认一个协议
TopPopup
- 从顶部展示弹出窗口CentrePopup
- 从中心展示弹出窗口BottomPopup
- 从底部展示弹出窗口
所以,您想要展示的示例视图将具有以下声明
struct BottomCustomPopup: BottomPopup {
...
}
3. 实现createContent()
方法
上述函数用于替代body属性,并声明弹出窗口视图的设计。
struct BottomCustomPopup: BottomPopup {
func createContent() -> some View {
HStack(spacing: 0) {
Text("Witaj okrutny świecie")
Spacer()
Button(action: dismiss) { Text("Dismiss") }
}
.padding(.vertical, 20)
.padding(.leading, 24)
.padding(.trailing, 16)
}
...
}
4. 实现configurePopup(popup: Config) -> Config
方法
声明此步骤是可选的 - 如果您愿意,您可以跳过此步骤,将UI配置留给我们。
每个协议都有自己的方法集,可以使用这些方法为每个弹出窗口创建独特的外观。
struct BottomCustomPopup: BottomPopup {
func createContent() -> some View {
HStack(spacing: 0) {
Text("Witaj okrutny świecie")
Spacer()
Button(action: dismiss) { Text("Dismiss") }
}
.padding(.vertical, 20)
.padding(.leading, 24)
.padding(.trailing, 16)
}
func configurePopup(popup: BottomPopupConfig) -> BottomPopupConfig {
popup
.horizontalPadding(20)
.bottomPadding(42)
.cornerRadius(16)
}
...
}
5. 从您想要的任何地方展示您的弹出窗口!
只需从选定位置调用 BottomCustomPopup().showAndStack()
即可。添加 dismissAfter 修饰符后,弹出窗口可以自动关闭。
struct SettingsViewModel {
...
func saveSettings() {
...
BottomCustomPopup()
.showAndStack()
.dismissAfter(5)
...
}
...
}
6. 关闭弹出窗口
有两种方法可以这样做
- 通过在您创建的弹出窗口内部调用以下其中一个方法:
dismiss
、dismiss(_ popup: Popup.Type)
、dismissAll(upTo: Popup.Type)
或dismissAll
。
struct BottomCustomPopup: BottomPopup {
...
func createButton() -> some View {
Button(action: dismiss) { Text("Tap to close") }
}
...
}
- 通过调用 PopupManager 的三个静态方法之一。
PopupManager.dismiss()
PopupManager.dismiss(_ popup: Popup.Type)
其中 popup 是您想要关闭的弹出窗口。PopupManager.dismissAll(upTo popup: Popup.Type)
其中 popup 是您想要在堆栈中关闭的弹出窗口的级别。PopupManager.dismissAll()
尝试我们的演示
通过克隆我们创建的 项目,亲自看看它是如何工作的。
许可协议
PopupView 采用 MIT 许可协议发布。有关详细信息,请参阅 LICENSE。
我们的其他开源 SwiftUI 库
Navigattie - 轻松而简洁地导航您的应用
GridView - 轻松布局您的数据
Timer - 适用于 Timer 的现代 API