2011-07-15 15 views
1
-(void)pinch:(UIPinchGestureRecognizer *)gesture 

{ 
    if((gesture.state == UIGestureRecognizerStateChanged) || 
     (gesture.state == UIGestureRecognizerStateEnded)) 
    { 
     self.scale *= gesture.scale; 
     gesture.scale = 1; 
    } 
} 

こんにちは私はiOSを勉強しています。 しかし、私はこのコードの最後の行である質問があります。なぜこのプロパティを設定する必要がありますか?getsture.scale = 1?

gesture.scale = 1

私はこれを繰り返し、それが変更されるたびに呼び出されますするつもりです。 なぜ1にリセットする必要がありますか?

私はこの意味について本当に知りません。 お願いします。

答えて

0

self.scaleが累積スケーリングファクタであると思われます。UIPinchGestureRecognizerが呼び出されるたびに、合計スケーリング係数が現在のスケーリング量で更新されます(それらを掛け合わせることによって)。

合計にスケーリングが適用されているため、ジェスチャのスケーリングは1にリセットされるため、同じ変換を複数回適用することはありません。

+0

ありがとうございます。しかし、私はまだ質問があります。あなたはそれが累積倍率だと言った。なぜそれは0に設定されませんでしたか?なぜ1? – MoonSoo

+0

これは乗法属性なので、スケール1は「変更なし」を意味し、スケール1.0は「10%大きい」などを意味します。例えば、ユーザーがハーフサイズにピンチして最初の場所に戻った場合、「.5」と「2.0」の連続した更新が行われるので、完了したらself.scaleは '.5 * 2.0' == '1.0'(あなたと同じサイズです)。 –

+0

ありがとうございます!わかった!! :-) – MoonSoo

関連する問題