0

ズームとパンのアプリケーションでは、上記のジェスチャ認識機能を使用しています。これはうまくいっています。画像を初期状態に戻すボタンが欲しいです。つまり、実際の画像を表示するか、初期状態にリセットします。これを達成する方法を教えてもらえますか?

コードは次のとおりです。

-(void)handlePanGesture:(UIPanGestureRecognizer*)recognizer

{
    CGPoint translation = [(UIPanGestureRecognizer*)recognizer translationInView:[self superview]];
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);
    [(UIPanGestureRecognizer*)recognizer setTranslation:CGPointMake(0, 0) inView:[self superview]];
}

-(void)handlePinchGesture:(UIPinchGestureRecognizer*)recognizer
{
    static CGRect initialBounds;

    if (recognizer.state == UIGestureRecognizerStateBegan)
    {
        initialBounds = self.bounds;
    }
    CGFloat factor = [(UIPinchGestureRecognizer *)recognizer scale];

    CGAffineTransform zt = CGAffineTransformScale(CGAffineTransformIdentity, factor, factor);
    self.bounds = CGRectApplyAffineTransform(initialBounds, zt);
}
4

1 に答える 1

0

@borrden のコメントに基づいています。

  1. ImageView の現在の中心と元の中心が同じかどうかを確認します。ImageView の中心をリセットしない場合。UIView.animation.. を追加して見栄えを良くすることができます。
  2. imageView をCGAffineTransformIdentityに設定して、元のサイズにサイズ変更し ます。これは、上記の UIView.animation.. にも追加できます。
  3. コード。必要に応じて変更を加えます。

    UIView.animateWithDuration(0.2, delay: 0.0, options: .CurveEaseIn, animations: {
    
          //Move image back to center
          self.mainImageView.center = self.originalCenter!
          self.layoutIfNeeded()
    
          //Resize image to original
          self.mainImageView.transform = CGAffineTransformIdentity
    
          }, completion: nil
    )
    
于 2016-08-03T12:55:38.200 に答える