LoginSignup
19
17

More than 5 years have passed since last update.

ピンチインアウトで縮小拡大する

Last updated at Posted at 2013-03-14

iPhoneの写真や地図はピンチインやピンチアウトで縮小拡大します。
そんなピンチについて書いたコードが意外となかったのでサンプルコードを書きました。

この例ではCALayerを縮小拡大しているのでAVFoundationを使っています。

ピンチインアウトで縮小拡大するコード(.m)
float beginGestureScale;
float effectiveScale;

- (void)viewDidLoad
{
    [super viewDidLoad];

    // 初期のスケールを設定する
    effectiveScale = 1.0;

    // ピンチのジェスチャーを登録する
    UIGestureRecognizer *recognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinchFrom:)];
    recognizer.delegate = self;
    [self.imageView addGestureRecognizer:recognizer];
}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]]) {
        // 適用されているスケールを覚えておく
        beginGestureScale = effectiveScale;
    }
    return YES;
}

- (void)handlePinchFrom:(UIPinchGestureRecognizer *)recognizer
{
    // 新しく適用するスケールを計算する (適用されているスケール x 新しくピンチしたスケール)
    effectiveScale = beginGestureScale * recognizer.scale;

    // スケールをビューに適用する
    [self.imageView.layer setAffineTransform:CGAffineTransformMakeScale(effectiveScale, effectiveScale)];
}

19
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
17