当父不是窗口时,可以通过以下方式获得相对于最内层 NSView 的坐标:
let superview = view.superview
let index = superview.subviews.firstIndex(of: view)
let frame = view.frame
let origin = frame.origin
func getSuperviewOrigin(_ view: NSView) -> CGPoint {
let superview = view.superview
let index = superview.subviews.firstIndex(of: view)
let frame = view.frame
let origin = frame.origin
if let superview = superview.superview {
let superOrigin = getSuperviewOrigin(superview)
return CGPoint(x: origin.x + superOrigin.x, y: origin.y + superOrigin.y)
} else {
return origin
}
}
这样就可以获得当前视图相对于最内层 NSView 的坐标。
领取专属 10元无门槛券
手把手带您无忧上云