WindowReference 添加了一个新的 SwiftUI 视图,它可以检索场景窗口 (NSWindow) 的引用,并将其放置在环境中。
导入 WindowReference
并将其用作视图层次结构中的一个(子)视图。
import SwiftUI
import WindowReference
@main
struct YourApp: App {
var body: some Scene {
WindowGroup("Some Window Title") {
WindowReference(withWindowInitializer: self.initWindow(_:)) {
SomeOtherView()
}
}
}
func initWindow(window: NSWindow) {
window.standardWindowButton(.miniaturizeButton)?.isHidden = true
window.standardWindowButton(.zoomButton)?.isHidden = true
}
}
在 WindowReference
的任何子视图中,您可以从环境中获取窗口。
struct SomeOtherView: View {
@Environment(\.window) var window: NSWindow?
var body: some View {
if let window = self.window {
Text("This view is inside a window with title \(window.title)")
} else {
Text("No window reference found :(")
}
}
}
该库具有针对 DocC 的丰富符号文档。
WindowReference 包含一个可执行目标,该目标启动一个 SwiftUI 应用程序来测试 WindowReference
。 可以使用以下方式执行它:
$ swift run
或在 Xcode 中选择 Product > Scheme
下的 TestApp
。
要在 SwiftUI 项目中使用 WindowReference
库,请将其添加到您软件包的依赖项中。
let package = Package(
// name, platforms, products, etc.
dependencies: [
// other dependencies
.package(url: "https://github.com/astzweig/swiftui-window-reference", from: "1.0.0"),
],
targets: [
.executableTarget(name: "<command-line-tool>", dependencies: [
// other dependencies
.product(name: "WindowReference", package: "swiftui-window-reference"),
]),
// other targets
]
)
swiftui-window-reference 版本支持的最低 Swift 版本如下所示:
swiftui-window-reference | 最低 Swift 版本 |
---|---|
0.0.1 ... |
5.10 |