17
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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)];
}

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
17
Help us understand the problem. What are the problem?