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");
}
}
但我現在知道如何在這裏添加動畫。謝謝你的幫助!