2013-02-03 34 views
8

के मुखौटे क्षेत्र के चारों ओर छाया जोड़ें, मैं को CAShapeLayer के साथ मास्क कर रहा हूं ताकि मेरी तालिका में कुछ पंक्तियों के अंदर एक बुकमार्क उत्पन्न हो सके।एक कैलियर

enter image description here

 CGMutablePathRef path = CGPathCreateMutable(); 
     CGPathAddLines(path, 
         NULL, 
         (CGPoint[]){ 
          CGPointMake(8, 0), 
          CGPointMake(22, 0), 
          CGPointMake(22, 22), 
          CGPointMake(15, 16), 
          CGPointMake(8, 22) 
         }, 
         5); 
     CGPathCloseSubpath(path); 

     CAShapeLayer *mask = [CAShapeLayer layer]; 
     mask.fillColor = [UIColor redColor].CGColor; 
     mask.bounds = CGRectMake(0, 0, 30, 30); 
     mask.path = path; 
     mask.anchorPoint = CGPointMake(0, 0); 

     CGPathRelease(path); 

     CAGradientLayer *favoriteBadge = [CAGradientLayer layer]; 
     favoriteBadge.colors = 
      @[(id)[UIColor colorWithRed:.97f green:0.5f blue:0.1f alpha:1.f].CGColor, // orange 
       (id)[UIColor colorWithRed:1.f green:.8f blue:0.f alpha:1.f].CGColor]; // yellow 
     favoriteBadge.locations = @[@0.0, @1.0]; 
     favoriteBadge.bounds = CGRectMake(0, 0, 30, 30); 
     favoriteBadge.anchorPoint = CGPointMake(1, 0); 
     favoriteBadge.position = CGPointMake(self.bounds.size.width, 0); 
     favoriteBadge.mask = mask; 
     // FIXME: This shadow is not being applied 
     favoriteBadge.shadowColor = [UIColor colorWithRed:.97f green:0.5f blue:0.1f alpha:1.f].CGColor; 
     favoriteBadge.shadowOpacity = 1.f; 

यह भी फ्लैट लग रहा है, इसलिए मैं इस आकार में ही चारों ओर एक छाया के साथ बंद समाप्त करना चाहते हैं। मैंने परत पर छाया सक्षम करने का प्रयास किया है, लेकिन ऐसा प्रतीत नहीं होता है। मुझे लगता है कि यह उस क्षेत्र में लागू किया जा रहा है जो आकार के अंदर नहीं है। मैं आकार में छाया कैसे जोड़ सकता हूं?

मैं परत की प्रतिलिपि बना सकता हूं, इसे गहरा कर सकता हूं और कुछ पिक्सेल द्वारा अपनी स्थिति ऑफसेट कर सकता हूं, लेकिन यह अपर्याप्त लगता है जब CoreAnimation शायद यह मेरे लिए अधिक कुशलतापूर्वक कर सकता है।

+0

+1 था अच्छी तरह से पूछा + आईडी भी जानना चाहते: डि हमेशा छवि को स्थानांतरित करने और अपने आप को सामान आकर्षित .. –

उत्तर

8

अपनी मुखौटा परत के लिए एक कंटेनर परत बनाएं और कंटेनर परत पर छाया लागू करें। मेरा मानना ​​है कि यह यहाँ वर्णित है:

http://travisjeffery.com/b/2012/08/ios-how-to-mask-and-shadow-an-image/

+0

बिंगो! इतना आसान, बहुत बहुत धन्यवाद :) – d11wtq

-2

हो सकता है कि केवल एक चीज तुम्हें याद किया

favoriteBadge.masksToBounds = NO