一个 Swift Package,用于在所有其他内容(包括模态窗口)之上呈现可配置的交互式胶囊悬浮窗。
与其他 Swift Package 一样,安装 Interactive Capsule Overlay,只需将其添加到 Package.swift
文件的 dependencies
部分即可。
.package(url: "https://github.com/lontronix/Interactive-Capsule-Overlay", from: "1.1.0")
import InteractiveCapsuleOverlay
@main
struct ExampleApp: App {
var body: some Scene {
WindowGroup {
RootView()
.showsInteractiveCapsuleOverlay()
}
}
}
创建一个自定义 CapsuleOverlayConfiguration
参数 | 类型 | 描述 |
---|---|---|
title | String | 胶囊中显示的突出文本 |
timeoutInterval | TimeInterval | 胶囊在自动关闭前显示的持续时间 |
primaryAction | ActionConfiguration | 点击胶囊上的任何位置(但二级操作按钮除外)时调用的操作 |
secondaryAction | ActionConfiguration | 点击二级按钮时调用的操作 |
onDismissButtonPressed | (() -> Void)? | 用户点击关闭按钮时调用的闭包 |
该操作被禁用并隐藏
该操作被启用并可见
参数 | 类型 | 描述 |
---|---|---|
iconIdentifier | String | 用于表示操作的图标(一个 SF Symbol 名称) |
onPressed | () -> Void | 当用户调用该操作时,此库调用的回调 |
悬浮窗从屏幕顶部呈现。
悬浮窗从屏幕底部呈现。
参数 | 类型 | 描述 |
---|---|---|
yOffset | CGFloat | 胶囊从屏幕顶部或底部(基于模式)偏移的距离。 |
注意: 对于底部模式,指定的值会自动取反。(例如,20 表示将胶囊向上移动 20 个点)
import InteractiveCapsuleOverlay
extension CapsuleOverlayConfiguration {
static func taskCompleted(accentColor: Color) -> CapsuleOverlayConfiguration {
return CapsuleOverlayConfiguration(
title: "Task Completed",
primaryAction: .enabled(iconIdentifier: "slider.horizontal.3", onPressed: {
// Do something
}),
timeoutInterval: 5,
secondaryAction: .enabled(iconIdentifier: "arrow.uturn.backward.circle.fill", onPressed: {
// Do something
}),
accentColor: accentColor
)
}
}
使用 showOverlay
环境变量以所需的配置显示胶囊。
import InteractiveCapsuleOverlay
struct ContentView: View {
@Environment(\.showOverlay) private var showOverlay
var body: some View {
Button("Complete Task") {
showOverlay(.taskCompleted(.blue))
}
}
}