パン ジェスチャ ハンドラーでは、単にtranslationInView
またはを取得locationInView
し、それからスケールを計算し、それに応じて変換を更新します。例えば:
- (void)handlePan:(UIPanGestureRecognizer *)gesture
{
static CGAffineTransform originalTransform;
if (gesture.state == UIGestureRecognizerStateBegan)
{
originalTransform = self.viewToScale.transform;
}
else if (gesture.state == UIGestureRecognizerStateChanged)
{
CGPoint translation = [gesture translationInView:gesture.view];
CGFloat scale = 1.0 - translation.y / 160.0;
self.viewToScale.transform = CGAffineTransformScale(originalTransform, scale, scale);
}
}
scale
正確に何をしたいのかに応じて計算をいじることができますが、うまくいけばアイデアが得られます。
個人的には、サイズ変更にはピンチ ジェスチャ レコグナイザを使用したいと思います (これは、ユーザーがトレーニングを受けている UI でscale
あり、箱から出してすぐに要素を提供するなどです)。ピンチ ジェスチャ レコグナイザーを実行すると、次のようになります。
- (void)handlePinch:(UIPinchGestureRecognizer *)gesture
{
static CGAffineTransform originalTransform;
if (gesture.state == UIGestureRecognizerStateBegan)
{
originalTransform = self.viewToScale.transform;
}
else if (gesture.state == UIGestureRecognizerStateChanged)
{
self.viewToScale.transform = CGAffineTransformScale(originalTransform, gesture.scale, gesture.scale);
}
}