在Mac OS X 10.6上获取相对于屏幕的NSView框架/边界

jun*_*cat 12 cocoa

我需要获得相对于屏幕的NSView的框架/边界.换句话说,我需要x和y坐标是屏幕上的位置,而不是相对于它的超视图的位置.

我根据评论提出了以下解决方案.

NSRect frameRelativeToWindow = [self.view
    convertRect:self.view.bounds toView:nil
];
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_6
NSPoint pointRelativeToScreen = [self.view.window
    convertRectToScreen:frameRelativeToWindow
].origin;
#else
NSPoint pointRelativeToScreen = [self.view.window
    convertBaseToScreen:frameRelativeToWindow.origin
];
#endif

NSRect frame = self.view.frame;

frame.origin.x = pointRelativeToScreen.x;
frame.origin.y = pointRelativeToScreen.y;
Run Code Online (Sandbox Code Playgroud)

omz*_*omz 22

NSRect frameRelativeToWindow = [myView convertRect:myView.bounds toView:nil];
NSRect frameRelativeToScreen = [myView.window convertRectToScreen:frameInWindow];
Run Code Online (Sandbox Code Playgroud)

  • convertRectToScreen在Mac OS X v10.7及更高版本中可用.我需要10.6 SDK. (3认同)