2011-03-03 15 views
7

से शुरू होने वाले सर्कल को कैसे आकर्षित करें मैं कुछ उदाहरण कोड के साथ काम कर रहा हूं जो CGPaths का उपयोग करके एक चाप खींचता है। मैंने चारों ओर एक नज़र डाली है और दस्तावेज़ीकरण पा लिया है, लेकिन मैं अपने सिर में विज़ुअलाइज़ नहीं कर सकता हूं जो MoveToPoint, AddLineToPoint आदि का उपयोग करने के मामले में चल रहा है। मैं नहीं देख सकता कि कोड क्या कर रहा है मैं बस कर सकता हूं परिणाम देखें।शीर्ष

उदाहरण के लिए नीचे दिया गया कोड 3 o घड़ी की स्थिति से एक पूर्ण 360 डिग्री से शुरू होता है। मेरे जीवन के लिए मैं यह समझ नहीं सकता कि इसे 12 घंटों की स्थिति से कैसे शुरू किया जाए, वास्तव में दृश्य को घुमाने के साथ - 90 डिग्री।

क्या कोई मुझे इस कोड को समझने में मदद कर सकता है और मैं 12 बजे से शुरुआत प्राप्त करने के लिए इसे कैसे बदल सकता हूं, अधिमानतः यह समझाने की कोशिश कर रहा हूं कि यह पूरा पथ कैसे काम करता है। या शायद मुझे एक दृश्य संसाधन ऑनलाइन इंगित करें?

- (void)drawPathWithArc:(CGFloat)arc { 
    CGMutablePathRef thePath = CGPathCreateMutable(); 
    CGPathMoveToPoint(thePath, NULL, 100.f, 100.f); 
    CGPathAddLineToPoint(thePath, NULL, 200.f, 100.f); 
    CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, 0.f, (360* M_PI)/180, NO); 
    CGPathCloseSubpath(thePath); 
    shapeLayer_.path = thePath; 
    CGPathRelease(thePath); 
} 

उत्तर

16

पथ वास्तव में दृष्टि से समझना मुश्किल नहीं हैं। असल में सभी पथ एक रेखा है जो कार्टेसियन विमान पर दो बिंदुओं को जोड़ती है जो आईफोन की स्क्रीन को परिभाषित करती है।

जब आप स्थानांतरित करते हैं तो यह निर्दिष्ट बिंदु पर पथ का वर्तमान बिंदु सेट करता है।

जब आप addLineToPoint जोड़ते हैं तो यह वर्तमान बिंदु से निर्दिष्ट बिंदु तक एक सीधी रेखा खींचता है।

जब आप जोड़ते हैं CurveToPoint यह वर्तमान बिंदु से कुछ घुमावदार रेखाओं और नियंत्रण बिंदुओं के आधार पर निर्दिष्ट बिंदु से एक घुमावदार रेखा खींचता है।

और इसी तरह। मैं प्रत्येक समारोह क्या कर रहा है बेहतर ढंग से समझने के लिए CGPaths पर सेब दस्तावेज पढ़ने की अनुशंसा करता हूं।

http://developer.apple.com/library/mac/#documentation/graphicsimaging/Reference/CGPath/Reference/reference.html


जहां तक ​​आपके प्रश्न 12 3 के बजाय इस शुरुआत कर रही है बस CGPathAddArc समारोह के लिए दस्तावेज़ को पढ़ने के लिए चला जाता है।

तुम क्या करने के लिए अपने मौजूदा कोड को बदलने की जरूरत है क्या:

CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, 0.f, (360* M_PI)/180, NO); 

रहे हैं:

CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, -M_PI_2, M_PI_2*3, NO); 

सभी इस कर रही है (सभी कोणों में मापा जाता है -90 डिग्री शुरू कोण बदल रहा है क्षैतिज से रेडियंस) और अंतिम कोण 270 डिग्री तक।


उम्मीद है कि इससे मदद मिलती है। चीयर्स,

ब्रेंटन।

+0

समझ में आता है धन्यवाद। मुझे पता था कि यह आपके द्वारा वर्णित लाइनों के साथ था, लेकिन मैं इसकी समझ पर संदेह कर रहा था क्योंकि यह वांछित काम कर रहा था। यह पता चला कि यह किसी अन्य समस्या के कारण काम नहीं कर रहा था। – dubbeat

+0

@ डबबीट - यदि आप क्वार्ट्ज ड्राइंग के बारे में कुछ और जानना चाहते हैं, तो मैं अपने उत्तर में कुछ संसाधनों को इंगित करता हूं [यहां] (http://stackoverflow.com/questions/3463256/what-are-ome-great- क्वार्ट्ज-2 डी-ड्राइंग ट्यूटोरियल/3,464,136 # 3,464,136)। –

+0

धन्यवाद ब्रैड। वहाँ बहुत उपयोगी सामग्री है – dubbeat