2011-08-11 11 views
29

मेरे पास एक UIView है जो क्लिक होने के बाद पॉपअप प्रदर्शित करता है। यह सुनिश्चित करने के लिए पॉपअप को मुख्य UIWindow में जोड़ा जाना चाहिए कि यह सब कुछ के शीर्ष पर चला जाए।आईओएस - एक विंडो में एक दृश्य का स्थान प्राप्त करें?

मैं इस पॉपअप की स्थिति को अपने UIView के सापेक्ष होना चाहता हूं, इसलिए मुझे विंडो में अपने UIView के सापेक्ष स्थान को जानने की आवश्यकता है।

प्रश्न: UIVindow में UIView का स्थान मुझे कैसे प्राप्त कर सकता है जब UIView सीधे UIWindow में नहीं है (यह मेरे दृश्य नियंत्रक के दृश्य में है)?

उत्तर

58

उपयोग UIView विधि covertRect का उपयोग कर सकते हैं: नए कोऑर्डिनेट स्थान में कनवर्ट करने के लिए toView।

// Convert the co-ordinates of the view into the window co-ordinate space 
CGRect newFrame = [self convertRect:self.bounds toView:nil]; 

// Add this view to the main window 
[self.window addSubview:self]; 
self.frame = newFrame; 

मेरे उदाहरण में, स्वयं एक राय यह है कि इसकी superView से हटाया जा रहा है और जहां यह था के शीर्ष पर खिड़की को जोड़ा गया है: मैं बहुत कुछ इसी तरह की थी। ToView में शून्य पैरामीटर: का मतलब है कि एक विशिष्ट दृश्य के बजाय विंडो का उपयोग करें।

आशा इस मदद करता है,

डेव

+0

बहुत बढ़िया, यह – aryaxt

+0

परफेक्ट काम किया। यदि आपको उनकी आवश्यकता हो तो समन्वय स्थान से और उससे परिवर्तित करने के लिए इन प्रकार की कई विधियां हैं। –

+1

क्या यह काम तब होता है जब दृश्य UIScrollView – AntiMoron

8

करता UIView के convertPoint: toView: काम नहीं? तो:

CGPoint windowPoint = [myView convertPoint:myView.bounds.origin toView:myWindow]; 
10

आप अपने .superview पूछने के लिए आप

CGPoint originGlobal = [myView.superview convertPoint:myView.frame.origin 
               toView:nil]; 
5

आप के लिए अपने origin कन्वर्ट करने के लिए कर सकते हैं मैं एक समाधान की तलाश में Xamarin.iOS

किसी के लिए में ऐसा करने की जरूरत है वहां, अंततः मेरे लिए क्या काम किया गया था:

CGRect globalRect = smallView.ConvertRectToView(smallView.Bounds, rootView); 
संबंधित मुद्दे