macos - 我可以访问托管 SwiftUI 场景的窗口的属性吗
问题描述
我想将一个窗口移动到 Mac 桌面上的特定位置。有没有办法访问和操作这个视图的属性?这将是 SwiftUI 创建的用于保存场景的窗口。
解决方案
根据上面的@asperi 评论,我能够提炼出解决方案。
import SwiftUI
struct ContentView: View {
@State var theWindow: NSWindow?
var body: some View {
Text("Window Access")
.frame(width: 400, height: 100, alignment: .center)
.padding()
.background(WindowAccessor(window: $theWindow))
.onTapGesture {
theWindow!.setFrameTopLeftPoint(NSPoint(x: 500, y: 800))
}
}
}
struct WindowAccessor: NSViewRepresentable {
@Binding var window: NSWindow?
func makeNSView(context: Context) -> NSView {
let view = NSView()
DispatchQueue.main.async {
self.window = view.window // << right after inserted in window
}
return view
}
func updateNSView(_ nsView: NSView, context: Context) {}
}
推荐阅读
- amazon-web-services - 试图在 AWS Logs Insight 查询中显示比率不起作用
- django-rest-framework - 在游标分页Django rest中通过ID游标
- graph - 使用 networkx 上的权重从邻接矩阵创建网络
- sql-server - 在动态 sql 脚本中使用变量
- opencv - Farneback光流算法的计算复杂度
- java - 如何解决此类中未经检查的强制转换警告?
- java - VSCode 清理语言服务器后无法导入 Java 包
- microsoft-graph-api - 端点管理器的 MS-Graph-API,GET AppLocker 文件数据不断抛出 HTTP/400
- c# - 如何为谷歌日历集成创建 credentials.json
- javascript - 在表格中书写时如何替换字符?