2011-03-26 7 views
0

drawRect가 호출 될 때 이미지를 표시하는 다음 코드가 있습니다.drawRect에서 UIImage 회전

UIImage *sourceImage = [UIImage imageNamed:@"icon.png"];  


CGRect rect = CGRectMake(12.5, 12.5, 
         sourceImage.size.width, 
         sourceImage.size.height); 

[sourceImage drawInRect:rect]; 

는이 그려되기 전에 나는이 정도의 숫자에 의해 회전이 얻을 수있는 방법, 모든 것을 내가 회전의 drawRect

답변

6
UIImage *image = [UIImage imageNamed:@"icon.png"]; 
UIImageView *imageView = [ [ UIImageView alloc ] initWithFrame:CGRectMake(0.0, 0.0, image.size.width, image.size.height) ]; 
imageView.image = image; 
[self addSubview:imageView]; 
CGAffineTransform rotate = CGAffineTransformMakeRotation(1.0/180.0 * 3.14); 
[imageView setTransform:rotate]; 
+2

의견 : 아마도 3.14가 아닌 M_PI를 사용하는 것이 더 좋습니다. 변환을 설정 한 경우 '프레임'을 사용해서는 안된다는 사실을 잊지 마시기 바랍니다. 인터페이스 방향 변경시 동작. – Tommy

+0

좋은 지적, 고마워. –

+0

M_PI에는 포인트가 표시되지만 프레임에는 표시되지 않습니다. 그게 내 코드와 어떻게 관련이 있을까요? –

4

무거운 보이는 이미지 뷰 (또는 다른 변환의 요구를 읽어 변환 행렬에 의해 행해진 다)은 "무겁지 않다". 모든 변환은 기본적으로 벡터와 작은 행렬의 간단한 곱셈입니다 (Apple's Quartz 2D documentation for the math 참조) 으로 이미지를 그리기 전에 CGContextRotateCTM(context, radians);을 사용하십시오. 을 사용하여 이미지를 그립니다. 다른 지점을 중심으로 이미지를 회전해야하는 경우 먼저 CGContextTranslateCTM으로 번역하십시오.