首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当父不是窗口时,有没有办法获得相对于最内层NSView的坐标?

当父不是窗口时,可以通过以下方式获得相对于最内层 NSView 的坐标:

  1. 获取当前视图的父视图:
代码语言:swift
复制
let superview = view.superview
  1. 获取父视图的子视图中当前视图的索引:
代码语言:swift
复制
let index = superview.subviews.firstIndex(of: view)
  1. 获取父视图的子视图中当前视图的坐标:
代码语言:swift
复制
let frame = view.frame
let origin = frame.origin
  1. 如果父视图的子视图中还有其他视图,则需要递归计算父视图的坐标:
代码语言:swift
复制
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 的坐标。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券