2011-07-15 50 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.1的縮放意味着「10%更大」,等等。例如,如果用戶捏合到一半尺寸然後返回到初始位置,您將獲得「.5」和「2.0」的連續更新,因此完成後,self.scale將爲「.5 * 2.0' =='1.0'(與你開始的尺寸相同)。 –

+0

非常感謝你!我知道了!! :-) – MoonSoo

相關問題