2013-07-10 10 views
53

के संबंध में UIView की स्थिति प्राप्त करें मेरे पास एक UIView है, जिसमें मैंने UIButtons की व्यवस्था की है। मैं उन UIButtons की स्थिति खोजना चाहता हूँ।अपने पर्यवेक्षक के पर्यवेक्षण

मुझे पता है कि buttons.frame मुझे पद देगी, लेकिन यह मुझे अपने तत्काल पर्यवेक्षण के संबंध में केवल स्थिति देगी।

क्या कोई तरीका है कि हम उन बटनों की स्थिति पा सकते हैं, जो UIButtons पर्यवेक्षण के पर्यवेक्षण का सम्मान करते हैं?

उदाहरण के लिए, मान लें कि UIView नाम "firstView" है।

फिर, मेरे पास एक और UIView है, "secondView"। यह "सेकेंड व्यू" "फर्स्ट व्यू" का एक सबव्यूव है।

तब मेरे पास "द्वितीय दृश्य" पर एक सबव्यूव के रूप में UIButton है।

->UIViewController.view 
--->FirstView A 
------->SecondView B 
------------>Button 

अब, वहाँ किसी भी तरह से हम चाहते हैं कि UIButton की स्थिति, "firstView" के संबंध में मिल सकती है?

उत्तर

125

आप इस का उपयोग कर सकते हैं:

उद्देश्य सी

CGRect frame = [firstView convertRect:buttons.frame fromView:secondView]; 

स्विफ्ट

let frame = firstView.convert(buttons.frame, from:secondView) 

प्रलेखन संदर्भ:

https://developer.apple.com/documentation/uikit/uiview/1622498-convert

+0

अपडेट किया गया यह करने के लिए जोड़ने के लिए, यदि आपके विचार एक ही दृश्य में हमेशा नहीं है (जैसे कि यदि आप एक में इस का उपयोग कर रहे फ़ंक्शन) आप '... से देख सकते हैं: [बटन पर्यवेक्षण]];' – mylogon

6

फ़्रेम: (एक्स, वाई, चौड़ाई, ऊंचाई)।

इसलिए चौड़ाई और ऊंचाई सुपर-सुपर व्यू को भी बदल नहीं सकती है। आप आसानी से एक्स, वाई प्राप्त कर सकते हैं।

X = button.frame.origin.x + [button superview].frame.origin.x; 
Y = button.frame.origin.y + [button superview].frame.origin.y; 
+0

लेकिन मुझे एक्स, वाई मान इतनी अधिक मात्रा में क्यों मिल रहा है जैसे कि मेरा एक्स 0,0 था तो मुझे कोड की आपकी लाइनों के साथ मिल रहा है; 180224 या तो? – YumYumYum

4

, स्विफ्ट 3 के लिए

if let frame = yourViewName.superview?.convert(yourViewName.frame, to: nil) { 

     print(frame) 
    } 

enter image description here

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