2010-07-20 23 views
9

Bir CALayer'ı rastgele bir yola kopyalamak mümkün mü? Süpergörün sınırlarına uydurabileceğimin farkındayım, ama bu durumda çok daha fazla kuralcı olmalıyım. TIA AdamRasgele bir yola CALayer kırpma

cevap

14

sen klibi istediğiniz katman için maske olarak bir CAShapeLayer kullanın. CAShapeLayer, bir CGPathRef alan bir yol özelliğine sahiptir.

1

Evet, özel katmanın drawInContext özelliğini geçersiz kılabilirsiniz.

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) 
} 

Yoksa maske olarak bir CAShapeLayer oluşturabilirsiniz.