2012-07-15 116 views
1

我不知道我做错了什么。经过多次缩放后,我的图像变小了!!? 我初始化变量如下: TOTAL_SCALE = 1.0; MIN_SCALE = 1.0; MAX_SCALE = 3.0;多次缩放后图像缩小

,这其我pinchrecognizermethod:

- (void)pinchDetected:(UIPinchGestureRecognizer *)pinchRecognizer 
{ 

CGFloat scale = pinchRecognizer.scale; 
if (TOTAL_SCALE + (scale - 1.0) > MAX_SCALE) { 
    scale = (MAX_SCALE - TOTAL_SCALE) + 1.0; 
    TOTAL_SCALE = MAX_SCALE; 
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale); 
} 
else if(TOTAL_SCALE + (scale - 1.0) < MIN_SCALE){ 
    scale = (TOTAL_SCALE - MIN_SCALE) + 1.0; 
    TOTAL_SCALE = MIN_SCALE; 
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale); 
} 
else{ 
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale); 
    TOTAL_SCALE += (scale - 1.0); 
} 
pinchRecognizer.scale = 1.0; 

} 

任何人能发现我的错误? 提前致谢!

+0

我不知道的iOS如何做转换,但这种在其他设置的行为只是意味着你需要初始化当前变换到级联操作之前的身份。 – Gene 2012-07-15 17:56:06

回答

1

想想这条线生产时TOTALSCALEMAXSCALE更大:

scale = (MAX_SCALE - TOTAL_SCALE) + 1.0; 

而作为一般的指导,你应该乘以尺度,不加入他们。

+0

但是TOTAL_SCALE如何超过MAX_SCALE?因为我问如果(TOTAL_SCALE +(scale - 1.0)> MAX_SCALE) – NewYearsEve 2012-07-15 20:01:00

1

我改变了除乘法马克赎金建议:

CGFloat scale = pinchRecognizer.scale; 
if (TOTAL_SCALE*scale > MAX_SCALE) { 
    scale = MAX_SCALE/TOTAL_SCALE; 
    TOTAL_SCALE = MAX_SCALE; 
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale); 
} 
else if(TOTAL_SCALE*scale < MIN_SCALE){ 
    scale = MIN_SCALE/TOTAL_SCALE; 
    TOTAL_SCALE = MIN_SCALE; 
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale); 
} 
else{ 
    imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale); 
    TOTAL_SCALE *= scale; 
}