UISheetPresentationController。sheet API,确保最大的兼容性和稳定性。sheet 实现完全相同的 API。UISheetPresentationController。interactiveDismissDisabled(_:Bool) 修饰符一起使用。UISheetPresentationController 配置选项。Environment 值跟踪当前选择的 detent。~44kB。该代码库支持 iOS,需要 Xcode 12.0 或更高版本。
打开你的项目。导航到 File > Swift Packages > Add Package Dependency。输入 URL https://github.com/ericlewis/PageSheet 并点击 Next。选择 PageSheet 目标,然后按 Add Package。
将以下行添加到 Package.swift 文件中的 dependencies 中
.package(url: "https://github.com/ericlewis/PageSheet.git", .upToNextMajor(from: "1.0.0"))
接下来,将 PageSheet 添加为目标的依赖项
.target(name: "AppTarget", dependencies: ["PageSheet"])
一个完整的示例可能如下所示
// swift-tools-version:5.5
import PackageDescription
let package = Package(
name: "App",
dependencies: [
.package(
url: "https://github.com/ericlewis/PageSheet.git",
.upToNextMajor(from: "1.0.0"))
],
targets: [
.target(
name: "AppTarget",
dependencies: ["PageSheet"])
]
)
如果你使用的是 Xcode 13.2.1,你可以导航到 Example 文件夹并打开随附的 Swift App Playground 来测试各种功能(并查看它们的实现方式)。
PageSheet 的工作方式类似于典型的 sheet 视图修饰符。
import SwiftUI
import PageSheet
struct ContentView: View {
@State
private var sheetPresented = false
var body: some View {
Button("Open Sheet") {
sheetPresented = true
}
.pageSheet(isPresented: $sheetPresented) {
Text("Hello!")
}
}
}
PageSheet 还支持通过条件 Identifiable 对象呈现。
import SwiftUI
import PageSheet
struct ContentView: View {
@State
private var string: String?
var body: some View {
Button("Open Sheet") {
string = "Hello!"
}
.pageSheet(item: $string) { unwrappedString in
Text(unwrappedString)
}
}
}
extension String: Identifiable {
public var id: String { self }
}
PageSheet 也可以使用应用于 Sheet 内容的视图修饰符集合进行自定义。
import SwiftUI
import PageSheet
struct ContentView: View {
@State
private var sheetPresented = false
var body: some View {
Button("Open Sheet") {
sheetPresented = true
}
.pageSheet(isPresented: $sheetPresented) {
Text("Hello!")
.preferGrabberVisible(true)
}
}
}
PageSheet 分为三个不同的模块,其中 PageSheetCore 处理实现,PageSheetPlus 提供了一个名为 sheetPreferences(_:) 的新修饰符。同名模块是 PageSheet,它将 PageSheetCore 和 PageSheetPlus 组合成一个单独的导入。
如果你只想使用 PageSheet 而无需额外的修饰符(以及额外的依赖项),请使用 PageSheetCore。
PageSheet 在 MIT 许可证下发布。 有关详细信息,请参见 LICENSE。