MijickPopupView 2.7.0

MijickPopupView 2.7.0

Mijick维护。



  • 作者
  • Tomasz Kurylik

PopupView Logo

弹出窗口展示变得简单

立即创建美丽、完全可自定义的弹出窗口。保持您的代码整洁

尝试我们准备的演示


SwiftUI logo Platforms: iOS, iPadOS, macOS, tvOS Current Version License: MIT

Made in Kraków Follow us on X Let's work together Stargazers

Popup Examples


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.swiftdependencies值中一样简单。

dependencies: [
    .package(url: "https://github.com/Mijick/PopupView.git", branch(“main”))
]

CocoaPods

CocoaPods是Swift和Objective-C Cocoa项目的依赖项管理器,可帮助优雅地扩展它们。

安装步骤

    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. 关闭弹出窗口

有两种方法可以这样做

  • 通过在您创建的弹出窗口内部调用以下其中一个方法:dismissdismiss(_ 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