2012-12-25 2 views
0

기본적으로 두 개의 이미지가있는보기를 만들고 있습니다. 이미지 하나는 뷰의 왼쪽 상단을 차지하는 직각 삼각형으로 표시되고, 이미지 2는 오른쪽 아래를 차지하는 오른쪽 삼각형 위로 이동합니다.iOS UIImageView 클립/마스크 이미지

대각선으로 자른 직사각형을 상상해 보면, 각각의 결과 절반에 서로 다른 이미지가 있습니다.

나는 마스크에 대해 많이 읽었지 만, 다른 이미지를 마스크로 사용하고 싶지 않습니다.

나는 삼각형을 형성하는 3 포인트를주는 방법을 찾고, 그런 식으로 이미지를 클립하십시오.

내가 Coregraphics에서 쉽게 할 수 있다고 생각합니다. 저는 생각하기에 전화가 누락되었습니다.

도움을 주시면 대단히 감사하겠습니다.

답변

2

여기에는 이미지 컨텍스트에 클리핑 패스를 사용하는 한 가지 방법이 있습니다. 이 예제는 이미지 크기가 256 x 256 인 경우이지만 사용자의 요구에 쉽게 맞출 수 있어야합니다.

UIGraphicsBeginImageContext(CGSizeMake(256, 256)); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, 256); 
CGContextConcatCTM(context, flipVertical); 
CGContextBeginPath(context); 
CGContextMoveToPoint(context, 0, 0); 
CGContextAddLineToPoint(context, 0, 256); 
CGContextAddLineToPoint(context, 256, 256); 
CGContextClosePath(context); 
CGContextSaveGState(context); 
CGContextClip(context); 
CGContextDrawImage(context, CGRectMake(0, 0, 256, 256), [image1 CGImage]); 
CGContextRestoreGState(context); 
CGContextBeginPath(context); 
CGContextMoveToPoint(context, 0, 0); 
CGContextAddLineToPoint(context, 256, 0); 
CGContextAddLineToPoint(context, 256, 256); 
CGContextClosePath(context); 
CGContextSaveGState(context); 
CGContextClip(context); 
CGContextDrawImage(context, CGRectMake(0, 0, 256, 256), [image2 CGImage]); 
CGContextRestoreGState(context); 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); // image contains the result 
UIGraphicsEndImageContext();