2012-04-18 7 views
3

UIImage (예 : 나는 UIImage 사용자 터치의 일부를 공개하고 싶습니다) 나는 mask를 사용하여 합리적인 결과를 데 layer의 재산. 내 UIView에이 같은아이폰 OS하십시오 UImage의 단지 부분을 그리기 나는 단지 사용자 정의 부분을 끌기 위해 노력하고

뭔가 그런 다음

UIBezierPath *maskPath = [UIBezierPath bezierPath]; 
[maskPath setLineWidth:10.0]; 
[maskPath moveToPoint:CGPointMake(10.0, 10.0)]; 
[maskPath addLineToPoint:CGPointMake(100.0, 100.0)]; 
CAShapeLayer *shapeMaskLayer = [CAShapeLayer layer]; 
shapeMaskLayer.path = maskPath.CGPath; 
[self.layer setMask:shapeMaskLayer]; 

, drawRect에 : 그것은 작동

- (void)drawRect:(CGRect)rect 
{ 
    [img drawInRect:rect]; 
} 

. 나는 단지 maskPath에 의해 정의 된 이미지의 부분을보고 있습니다.

그러나 이것이이 문제에 접근하는 최선의 방법은 아닙니다. 그래서 내 질문은 : iOS SDK에서 이미지의 사용자 정의 부분 (모든 모양 일 수 있음)을 그릴 수있는 가장 좋은 방법은 무엇이겠습니까?.

답변

4

시도해 볼 수있는 한 가지 방법은 추가 레이어를 만드는 대신 단순히 클리핑하는 것입니다. 예 :

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 

    UIBezierPath *maskPath = [UIBezierPath bezierPath]; 
    [maskPath setLineWidth:10.0]; 
    [maskPath moveToPoint:CGPointMake(10.0, 10.0)]; 
    [maskPath addLineToPoint:CGPointMake(100.0, 100.0)]; 

    CGContextAddPath(ctx, maskPath.CGPath); 
    CGContextClip(ctx) 
    [img drawInRect:rect]; 
}