WindowReference

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

WindowReference 包含一个可执行目标,该目标启动一个 SwiftUI 应用程序来测试 WindowReference。 可以使用以下方式执行它:

$ swift run

或在 Xcode 中选择 Product > Scheme 下的 TestApp

WindowReference 添加为依赖项

要在 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