2016-11-09 70 views
0

我對iOS相當新,我想弄清楚如何使用捏手勢來縮放慣性和開銷(我不知道這個詞的開銷是否正確在這個背景下,在德國它將被稱爲「Überschwingen」)。iOS:縮放使用捏手勢與慣性和頭頂

基本上它應該做什麼:它應該有一個最大和最小比例(在我的情況下1.0到4.0),你可以放大。當手勢完成時,它應該採用給定的速度並製作一條曲線動畫,同時允許視圖對給定比例進行上下移動,然後像張力一樣回到最小或最大值。

我得到了爲此運行的手勢識別器,並設法讓它利用我的最小和最大比例(使用來自stackoverflow的示例)。這是我到目前爲止:

- (void)handle_pinch:(UIPinchGestureRecognizer *)recognizer 
{ 

    if([recognizer state] == UIGestureRecognizerStateBegan) { 
     previousScale = 1.0; 
     lastPoint = [recognizer locationInView:[recognizer view]]; 
    } 

    if ([recognizer state] == UIGestureRecognizerStateChanged) { 

     CGFloat currentScale = [[[recognizer view].layer valueForKeyPath:@"transform.scale"] floatValue]; 

     // Constants to adjust the max/min values of zoom 
     const CGFloat kMaxScale = 4.0; 
     const CGFloat kMinScale = 1.0; 

     CGFloat newScale = 1 - (previousScale - [recognizer scale]); // new scale is in the range (0-1) 
     newScale = MIN(newScale, kMaxScale/currentScale); 
     newScale = MAX(newScale, kMinScale/currentScale); 
     scale = newScale; 

     CGAffineTransform transform = CGAffineTransformScale([[recognizer view] transform], newScale, newScale); 

     [recognizer view].transform = transform; 

     CGPoint point = [recognizer locationInView:[recognizer view]]; 
     CGAffineTransform transformTranslate = CGAffineTransformTranslate([[recognizer view] transform], point.x-lastPoint.x, point.y-lastPoint.y); 

     [recognizer view].transform = transformTranslate; 
     NSLog(@"Transformed"); 
    }  
} 

但我現在知道如何在這裏添加動畫。謝謝你的幫助!

回答