2012-08-05 1 views
1

UISliders를 통해 스케일링 및 회전하는 이미지 뷰가 있습니다.CGAffineTransform 스케일링 및 회전

이 작동
- (IBAction)sizeSlider:(UISlider *)sender 
{ 
    int SCALE_MAX = 200; 
    int SCALE_MIN = 10; 
    CGAffineTransform transform = image.transform; 
    float scale = sqrt(transform.a*transform.a + transform.c*transform.c); 
    if (scale > SCALE_MAX) 
     image.transform = CGAffineTransformScale(transform, SCALE_MAX/scale*sender.value, SCALE_MAX/scale*sender.value); 
    else if (scale < SCALE_MIN) 
     image.transform = CGAffineTransformScale(transform, SCALE_MIN/scale*sender.value, SCALE_MIN/scale*sender.value); 
} 

- (IBAction)angleSlider:(UISlider *)sender 
{ 
    CGAffineTransform t = CGAffineTransformMakeRotation(sender.value); 
     image.transform = t; 
} 

에서, 이미지 뷰가 원래 크기에서 축소 된 그러나 경우 다음 이미지를 회전하면 원래 크기로 재설정 : 여기에 내가 그렇게 할 방법이다. 이 문제를 어떻게 방지 할 수 있습니까?

답변

1

회전시 눈금과 비슷한 방식을 사용하십시오. 의미, 사용

CGAffineTransformRotate(image.transform, theAngle); 
0
CGAffineTransformMakeRotation 

가 만드는 새로운 정체성을 기반으로 변환. 크기 조절은 변형의 일부이므로 기존의 크기 조절 된 변형에 회전을 추가하는 대신

CGAffineTransformRotate 

을 사용하려고합니다.