2010-07-20 3 views
9

CALayer를 임의의 경로로 클립 할 수 있습니까? 나는 슈퍼 레이어의 경계까지 잘랐다는 것을 알고 있지만,이 경우 나는 훨씬 더 규범 적이어야한다. TIA, 아담CALayer를 임의의 경로로 자르기

답변

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

또는 마스크로 CAShapeLayer를 만들 수 있습니다.

관련 문제