私はかなり新しい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");
}
}
ここで私はどのようにアニメーションを追加できるのか分かります。助けてくれてありがとう!