2012-04-24 15 views
11

पर स्क्रीन के सापेक्ष NSView फ्रेम/सीमाएं प्राप्त करें मुझे स्क्रीन के सापेक्ष एनएसवीव के फ्रेम/सीमाएं प्राप्त करने की आवश्यकता है। दूसरे शब्दों में मुझे स्क्रीन पर स्थिति होने के लिए एक्स और वाई निर्देशांक की आवश्यकता है, जो इसके पर्यवेक्षण के सापेक्ष स्थिति नहीं है।मैक ओएस एक्स 10.6

मैं टिप्पणियों के आधार पर निम्नलिखित समाधान के साथ आया हूं।

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; 

उत्तर

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

convertRectToScreen मैक ओएस एक्स v10.7 और बाद में उपलब्ध है। मुझे 10.6 एसडीके की आवश्यकता है। – junglecat

संबंधित मुद्दे