2015-02-23 100 views
0

我想降低UIScrollView的縮放速度行爲。更改UIScrollView捏縮放速度

我試過了這兩個答案給出的解決方案:Answer 1,Answer 2,但我沒有得到預期的結果。

這是我實現的回答2:

- (void)scrollViewDidZoom:(UIScrollView *)scrollView { 

    if(scrollView.multipleTouchEnabled){ 

     CGFloat fSpeedZoom = 2; 
     CGFloat fMaxZoomScale = scrollView.maximumZoomScale; 
     CGFloat fMinZoomScale = scrollView.minimunZoomScale; 

     scrollView.maximumZoomScale = scrollView.zoomScale + fSpeedZoom; 
     scrollView.minimumZoomScale = scrollView.zoomScale - fSpeedZoom; 

     if(scrollView.maximumZoomScale > fMaxZoomScale){ 
      self.scrollView.maximumZoomScale = fMaxZoomScale; 
     } 

     if(scrollView.minimumZoomScale < fMinZoomScale){  
      self.scrollView.minimumZoomScale = fMinZoomScale; 
     } 
    } 
} 

如果我把2和5之間的fSppedZoom值我得到一種指數的行爲,其中還我試圖放大的,越慢放大。我想得到一個線性行爲,其中用一個參數我可以控制縮放速度。

回答

0

我會建議不要這樣做。

當您拖動時,拖動開始時位於手指下方的點位於您的手指下方,同時拖動平底鍋。直到到達可拖動區域的邊緣時,這種情況仍然存在,此時點與鍋相同的方向移動,但距離不遠,以模擬阻力。

當你縮小變焦時,同樣的事情發生。兩個手指下面的兩個點位於您的手指下方,因爲這兩個手指移動(因此您可以在縮放的同時進行平移)。再次,這隻在進一步縮放不可能時纔會發生。

如果您打破此接觸點關係,用戶交互感覺異常和不自然。

如果你絕對必須這樣做,我會建議,而不是試圖打UIScrollView的內置縮放行爲,實現自己的縮放手勢識別器,並考慮到關係,你想要的位置之間,以實現自己的觸摸以及要顯示的滾動視圖的區域。