2012-04-24 9 views
11

Potrzebuję uzyskać ramkę/ograniczenia NSView względem ekranu. Innymi słowy, potrzebuję współrzędnych x i y, aby być pozycją na ekranie, a nie pozycją względem jej superview.Uzyskaj ramkę/ograniczenia NSView w stosunku do ekranu w systemie Mac OS X 10.6

Wymyśliłem następujące rozwiązanie na podstawie komentarzy.

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; 

Odpowiedz

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

convertRectToScreen jest dostępna w systemie Mac OS X v10.7 lub nowszej. Wymagam pakietu SDK 10,6. – junglecat

Powiązane problemy