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。