1

何が間違っているのかわかりません。複数のスケールの後、私の画像は小さくなりますか?!?次のように変数を初期化します。TOTAL_SCALE=1.0; MIN_SCALE = 1.0; MAX_SCALE = 3.0;

そしてこれは私のピンチレコグナイザーメソッドです:

- (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;

}

誰かが私の間違いを見つけることができますか?少し早いですがお礼を!

4

2 に答える 2

1

TOTALSCALEがより大きい場合にこの行が生成するものについて考えてくださいMAXSCALE

scale = (MAX_SCALE - TOTAL_SCALE) + 1.0;

また、一般的なガイドとして、スケールを追加するのではなく、乗算する必要があります。

于 2012-07-15T17:58:39.287 に答える
1

Mark Ransom が提案したように、加算を乗算に変更しました。

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; 
}
于 2012-07-15T20:27:19.973 に答える