2012-04-24 7 views
11

Necesito obtener un marco/límites de NSView relativos a la pantalla. En otras palabras, necesito que las coordenadas xey sean la posición en la pantalla, no la posición relativa a su supervista.Obtener marcos/límites de NSView relativos a la pantalla en Mac OS X 10.6

He encontrado la siguiente solución basada en los comentarios.

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; 

Respuesta

21
NSRect frameRelativeToWindow = [myView convertRect:myView.bounds toView:nil]; 
NSRect frameRelativeToScreen = [myView.window convertRectToScreen:frameInWindow]; 
+3

convertRectToScreen está disponible en Mac OS X 10.7 y posteriores. Necesito el 10,6 SDK. – junglecat

Cuestiones relacionadas