2010-07-20 8 views
9

क्या एक कैलियर को मनमाने ढंग से पथ पर क्लिप करना संभव है? मुझे पता है कि मैं सुपरलेयर की सीमाओं पर क्लिप कर सकता हूं, लेकिन इस मामले में मुझे कहीं अधिक अनुवांशिक होने की आवश्यकता है।मनमाने ढंग से पथ के लिए एक कैलियर को बंद करना

TIA, एडम

उत्तर

14

परत आप क्लिप करना चाहते हैं के लिए मुखौटा के रूप में एक CAShapeLayer का प्रयोग करें। CAShapeLayer की पथ संपत्ति है जो एक CGPathRef लेती है।

1

हां आप कस्टम परत के drawInContext को ओवरराइड कर सकते हैं।

func addPathAndClipIfNeeded(ctx:CGContext) { 
    if (self.path != nil) { 
     CGContextAddPath(ctx,self.path); 
     if (self.stroke) { 
      CGContextSetLineWidth(ctx, self.lineWidth); 
      CGContextReplacePathWithStrokedPath(ctx); 
     } 
     CGContextClip(ctx); 
    } 
} 
override public func drawInContext(ctx: CGContext) { 
    super.drawInContext(ctx) 
    addPathAndClipIfNeeded(ctx) 
} 

या आप मास्क के रूप में एक कैशपलेयर बना सकते हैं।

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