首页 > 解决方案 > 您如何以编程方式快速获取当前的 Mac 窗口位置/原点

问题描述

我的想法是在 viewController 中放置一个函数,但是当我调用它时,x 和 y 都为 0 而不是窗口位置,显然我在某个地方搞砸了任何想法?

    class ViewController: NSViewController {
        
        func getCoordinate() {
            let x = self.view.frame.origin.x
            let y = self.view.frame.origin.y
            print (x)
            print (y)
        }
        
}

标签: swiftmacos

解决方案


你需要得到view.window.frame, 而不是view.frame.

if let window = view.window {
    print(window.frame.origin)
} else {
    print("The view is not in a window yet!")
}

请记住,只有在view添加到窗口后才能执行此操作,例如在viewDidAppear.

view' 框架相对于'view超级视图的原点,而不是屏幕的原点。恰好在这种情况下,view恰好位于其父视图的原点(无论是什么视图),因此是 (0, 0)。


推荐阅读