2013-02-27 188 views
36

मुझे convertPoint:toView: विधि को समझ में नहीं आता है।कन्वर्टपॉइंट को समझना: toView:

एप्पल के प्रलेखन में यह लिखा है कि

convertPoint:toView:

रिसीवर के समन्वय निर्दिष्ट देखने की है कि करने के लिए सिस्टम से एक बिंदु में बदलता है।

- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view 

लेकिन क्या एक से दूसरे के लिए एक बिंदु परिवर्तित करता है वास्तव में क्या मतलब है?

क्या यह दर्शाता है कि दोनों सीमाओं में अंक विभिन्न इकाइयां हैं? या सिर्फ अलग मूल्य?

यदि यह उत्तरार्द्ध है, तो ऐसी कोई विधि क्यों है जब हम बस बी 0 के contentOffset के मान को असाइन कर सकते हैं?

CGPoint a = [a contentOffset]; 
[b setContentOffset:a]; 

कैसे convertPoint:toView: बस contentOffset बताए से अलग है? या मैंने पूरी अवधारणा को गलत समझा? कनवर्टिंग पॉइंट वास्तव में क्या करता है? इस विधि का उपयोग कब किया जाना चाहिए?

+0

मेरा मानना ​​है कि इसे 'view.transform' के साथ कुछ करना है। – Cyrille

+0

@Cyrille क्या देखता है। ट्रांसफॉर्म करते हैं? केंद्र संपत्ति को दूसरे दृश्य में असाइन करना? –

+0

http://stackoverflow.com/questions/2081753/getting-the-bounds-of-an-mkmapview – Rajneesh071

उत्तर

111

प्रत्येक UIView की अपनी समन्वय प्रणाली होती है। इसलिए यदि आपके पास UIView_1 है जिसमें एक और UIView_2 है, तो उनके दोनों में एक बिंदु (10,10) है।

कन्वर्टपॉइंट: toView: डेवलपर को एक दृश्य में एक बिंदु लेने और बिंदु को दूसरे दृश्य समन्वय प्रणाली में बदलने की अनुमति देता है।

उदाहरण: व्यू 1 में व्यू 2 शामिल है। व्यू 2 का ऊपरी बाएं कोने व्यू 1 पॉइंट (10,10) पर स्थित है, या view2.frame.orgin = {10,10} कहने के लिए बेहतर है। वह {10,10} दृश्य 1 समन्वय प्रणाली में आधारित है। अब तक सब ठीक है।

उपयोगकर्ता दृश्य 2 के अंदर बिंदु {20,20} पर व्यू 2 को छूता है। अब वे निर्देशांक व्यू 2 समन्वय प्रणाली में हैं। अब आप covertPoint का उपयोग कर सकते हैं: toView: {20,20} को देखने के समन्वय प्रणाली में कनवर्ट करने के लिए। संपर्क सूत्र = {20,20}

CGPoint pointInView1Coords = [view2 convertPoint:touchPoint toView:view1]; 

तो अब pointInView1Coords {30,30} View1 में समन्वय प्रणाली होनी चाहिए। अब यह इस उदाहरण पर बस सरल गणित था, लेकिन रूपांतरण में योगदान देने वाली सभी चीजें हैं। परिवर्तन और स्केलिंग दिमाग में आते हैं।

UIView फ्रेम, सीमाओं और केंद्र के बारे में पढ़ें। वे सभी संबंधित हैं और वे एक दृश्य के लिए समन्वय प्रणाली से निपटते हैं। जब तक आप उनके साथ सामान करना शुरू नहीं करते हैं तब तक यह भ्रमित होता है। याद रखें कि यह फ्रेम और केंद्र माता-पिता की समन्वय प्रणाली में हैं। बाउंड दृश्य के समन्वय प्रणाली में है।

जॉन