2011-03-30 21 views
13

मैं एक वेक्टर ड्राइंग प्रोग्राम से आईओएस पर्यावरण में पथ आयात करने की कोशिश कर रहा हूं। मैं उन्हें CGpaths या UIbezierpaths में ले जाना चाहता हूं। मैं एडोब इलस्ट्रेटर से पथ आयात करने में सबसे रूचि रखता हूं। सबसे अच्छा तरीका एक एसवीजी के रूप में सहेजने लगता है और फिर आयात करता है।UIBezierpaths, NSBezierpaths, CGPaths में एसवीजी को आयात/विश्लेषण कैसे करें?

मुझे निर्यातित एसवीजी फाइलों को पार्स करने के लिए कुछ संसाधन मिल गए हैं जो पथ का वर्णन करते हैं। हालांकि, जो कुछ भी मैंने पाया है वह केवल पूर्ण पथ से संबंधित है, न कि सापेक्ष पथ। नीचे दिए गए पथ में पूंजी सी और लोअरकेस सी है। मुझे पता है कि पूंजी सी (पूर्ण पथ) को कैसे पार्स करना है, लेकिन मुझे नहीं पता कि लोअरकेस सी (सापेक्ष पथ)

को पार्स करने के लिए मुझे कोई जानकारी नहीं है कि मैं आईओएस/कोको में एसवीजी फाइलों को आयात करने के लिए एक पार्सर लिखने में मदद की तलाश में हूं। मुझे लगता है कि इंटरनेट पर हफ्तों तक खोज करके इस निर्णय की बड़ी आवश्यकता है।

यहां, एक पथ का एक उदाहरण है जिसे मैं अपने आईफोन ऐप में आयात करना चाहता हूं। मैं छवि आयात करने की तलाश नहीं कर रहा हूं, मुझे पथ ही चाहिए। तो, मैं इसे कुशल बना सकता हूं। कोई भी सहायताकाफी प्रशंसनीय होगी।

x="0px" y="0px" width="320px" height="436px" viewBox="-1.4 -0.5 320 436" 

d="M294.1,116C290.6,1.4,170.9,0.4,159.6,0.5 
C148.3,0.4,28.7,1.4,25.2,116c-3.7,120.3-49.6,141.4-5.9,233.9c41.3,87.4,130.7,87,140.4,86.7c9.7,0.3,99.1,0.8,140.4-86.7 
C343.7,257.4,297.8,236.3,294.1,116z 

यदि यह सभी पूर्ण पथ थे तो मैं इसे हल करने में सक्षम हूं। यह रिश्तेदार है (यानी लोकेसेज़ (सी) पथ) जो वास्तव में मुझे भ्रमित कर रहे हैं।

उत्तर

10

ठीक है, अगर आप इसके लिए भुगतान करना चाहते हैं। यह टूल आपके सभी मुद्दों को हल करेगा। आप svg या psd आयात कर सकते हैं और आपके लिए कोड तैयार करेंगे। मैंने इसका इस्तेमाल किया है और यह आश्चर्यजनक है! मैक App स्टोर

http://www.paintcodeapp.com/

+0

पेंटकोड ग्रेडियंटस्ट्रोक का समर्थन नहीं करता है। उम्मीद है कि वे इसे भविष्य में जोड़ देंगे। – eonist

2

आप ObjC के लिए जे एस से कुछ अनुवाद करने के लिए तैयार कर रहे हैं, तो आप इस परियोजना के लिए उपयोगी हो सकती:

https://github.com/thelonious/svg-2d

विशेष रूप से, path.js फ़ाइल जो एक parseData विधि भी शामिल है, लेने की देखभाल सापेक्ष और पूर्ण पथ आदेशों के।

https://github.com/thelonious/svg-2d/blob/master/shapes/path/Path.js

मुझे लगता है कि मैं इस कोड साल पहले लिखा था उल्लेख करना चाहिए, लेकिन मैं इसे करने के लिए जावा और सी # अनुवाद किया है और पेशेवर उत्पादों में इस्तेमाल किया है (कि कोड साझा नहीं कर सकते, दुर्भाग्य से) और यह काम करने के लिए लग रहा था अच्छी तरह से उन वातावरण में भी।

HTH केविन

3

वहाँ, विशेष रूप से iOS के लिए (और ओएस एक्स, हालांकि ओएस एक्स निर्माण थोड़ा पीछे है) ObjectiveC में एक खुला स्रोत एसवीजी पुस्तकालय है:

https://github.com/SVGKit/SVGKit/

(मैं इस साल की शुरुआत के बाद से आईओएस परियोजनाओं पर इसका उपयोग कर रहा हूं, यह अच्छी तरह से काम करता है)

2012 की शुरुआत में, यह एसवीजी स्पेक का 100% कार्यान्वयन नहीं है, लेकिन बहुत से लोग इसे प्राप्त करने पर काम कर रहे हैंकर रहे हैं।

1

स्केच 3 संपादन पर और फिर PaintCode को एसवीजी के रूप में निर्यात (PaintCode की तुलना में बेहतर हो सकता है) अच्छा है।

पीडीएफ और आयात ठीक

https://itunes.apple.com/gb/app/sketch-3/id852320343?mt=12

बनाओ दोनों में यकीन है कि कैनवास आकार एक ही करने के लिए सेट कर दिया जाता के रूप में सहेजें और अपने विचारों सीमा में वापस स्केच को PaintCode से प्राप्त करने के लिए किसी और आप संदर्भ पैमाने पर करने की जरूरत है।

+(CGPathRef) newCGPathFromSVGPath:(NSString*)anSVGPath whileApplyingTransform:(CGAffineTransform)aTransform; 

आप वास्तव में क्या अनुरोध करने पर के लिए इसका इस्तेमाल कर सकते हैं:

0

SVGgh एक वर्ग, SVGPathGenerator है, जो एक CGPathRef के लिए एक एसवीजी पथ में परिवर्तित कर देंगे शामिल हैं।

[स्विफ्ट 3 अपडेट] यदि आप शुद्ध स्विफ्ट समाधान चाहते हैं। मेरा (प्रगति पर) Scalar2D पुस्तकालय में CGPath पर एक विस्तार है जो एक एसवीजी पथ से एक CGPath बनाता है।

0

यह समाधान UIBezierPath के लिए एक एसवीजी पथ तार का एक सीधे रूपांतरण है। यह मेरे ऐप के लिए बहुत अच्छा काम करता है जहां मुझे संयुक्त राज्यों को UIView के रूप में आकर्षित करना पड़ा।

https://github.com/ap4y/UIBezierPath-SVG

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

  • कोई संबंधित समस्या नहीं^_^