2011-10-20 8 views
5

मेरे पास एक कैरोसेल में विचारों का एक सेट है, प्रत्येक पृष्ठभूमि के रूप में एक CAGradientLayer का उपयोग कर रहा है। कैरोसेल एक बनावट पृष्ठभूमि पर बैठता है। चयनित दृश्य दिखाने के लिए मुझे पृष्ठभूमि को त्रिकोण में पोक करने के लिए कहा गया है। मैं सिर्फ पृष्ठभूमि बनावट के साथ त्रिकोणीय छवि का उपयोग नहीं कर सकता, क्योंकि यह मुख्य पृष्ठभूमि के साथ जरूरी नहीं होगा। मैं वर्तमान दृश्य की पृष्ठभूमि से एक पायदान काटना चाहता हूं, ताकि बनावट पृष्ठभूमि पायदान के माध्यम से दिखाई दे।मैं कैलियर से बाहर कैसे निकल सकता हूं?

मुझे इसके बारे में कैसे जाना चाहिए? क्या बहुभुज परत बनाना संभव है?

उत्तर

10

मैंने पाया कि मैं एक CAShapeLayer का उपयोग कर यह करने के लिए कर रहा था:

CAShapeLayer *mask = [[[CAShapeLayer alloc] init] autorelease]; 
mask.frame = backgroundLayer.bounds; 
mask.fillColor = [[UIColor blackColor] CGColor]; 

CGFloat width = backgroundLayer.frame.size.width; 
CGFloat height = backgroundLayer.frame.size.height; 

CGMutablePathRef path = CGPathCreateMutable(); 

CGPathMoveToPoint(path, nil, 0, 0); 
CGPathAddLineToPoint(path, nil, width, 0); 
CGPathAddLineToPoint(path, nil, width, height); 
CGPathAddLineToPoint(path, nil, (width/2) + 5, height); 
CGPathAddLineToPoint(path, nil, width/2, height - 5); 
CGPathAddLineToPoint(path, nil, (width/2) - 5, height); 
CGPathAddLineToPoint(path, nil, 0, height); 
CGPathAddLineToPoint(path, nil, 0, 0); 
CGPathCloseSubpath(path); 

mask.path = path; 
CGPathRelease(path); 

backgroundLayer.mask = mask; 
-3

क्या पॉलीगोनल परत बनाना संभव है?

सं

मैं इस बारे में कैसे जाना चाहिए?

एक मुखौटा का उपयोग करें - एक पीएनजी छवि जो आपकी परत के समान आकार है लेकिन थोड़ा कट आउट हो गया है - इससे कैलियर को इसमें से एक हिस्सा काट दिया जाएगा। (हालांकि, अगर आप कट-आउट बड़े होते हैं तो ऐसा नहीं होगा, आप उपयोगकर्ताओं को इसके पीछे जो कुछ भी छूने की कोशिश कर रहे हैं, जो काम नहीं करेगा!)।

अधिक जानकारी के लिए documentation (और stackoverflow खोजें) देखें।

+0

मैं वास्तव में एक PNG मुखौटा का उपयोग नहीं कर सकते हैं - दृश्य गतिशील आकार है। – Simon

+0

क्वार्ट्ज ड्राइंग एपीआई का उपयोग करके गतिशील रूप से अपना मुखौटा बनाएं - http://www.codeproject.com/KB/iPhone/iOSGetStarted01.aspx – deanWombourne

+0

यह वास्तव में एक वैध उत्तर है, क्योंकि परत प्रति से हमेशा एक आयताकार (ऐप्पल का दस्तावेज) होता है, इसलिए एक .png छवि एक व्यावहारिक समाधान है। –

0

मुझे नहीं लगता कि हम पॉलीगोनल परतों को आकर्षित कर सकते हैं। हालांकि, मुझे विश्वास है कि अपेक्षित परिणाम दो अलग अलग तरीकों का उपयोग कर प्राप्त किया जा सकता: -

  1. अपनी छवियों को एक ही आकार के हैं तो आप एक PNG छवि पारदर्शी निशान के साथ के बीच में (या बाहर के अनुसार उपयोग कर सकते हैं अपने इच्छा)।

  2. एक भरे आयताकार और पारदर्शी त्रिभुज बहुभुज बनाएं। फिर आपको बहुभुज (आयताकार और त्रिकोण) दोनों को छेड़छाड़ करने की आवश्यकता है। नतीजतन आकार कैरोसेल छवि पर रखा जाना चाहिए। इस विधि का लाभ यह है कि यदि आवश्यक हो तो आप बहुभुज के आकार और आकार को गतिशील रूप से बदल सकते हैं।

आशा है कि इससे मदद मिलती है!