簡體   English   中英

在同一個 UIImageView 上使用 2 個 UIPinchGestureRecognizers

[英]Using 2 UIPinchGestureRecognizers on the same UIImageView

我有一個圖像視圖,我想在不保持縱橫比的情況下進行縮放以重新縮放。 為了做到這一點,我認為這可能是可行的:

  1. 使用兩個捏合手勢識別器,一個水平伸展,一個垂直伸展。
  2. 使用一個捏合識別器,但一個接一個地應用兩個變換。

這是我的捏處理 function:

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

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

    //scale horizontally
    CGAffineTransform zt = CGAffineTransformScale(CGAffineTransformIdentity, 
                                                     factor-(1.0-factor), 1.0);
    imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);

    //now scale vertically
    zt = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, factor);
    imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);
    return;
}

由於某種原因,轉換僅在垂直方向進行(最后一個)。 我嘗試將第二個 CGRectApplyAffineTransform 的第一個參數更改為 imageView.bounds,但仍然沒有用。

誰能告訴我哪里出錯了?

此外,當使用兩個捏合手勢識別器時,會發生同樣的事情——實際上只有其中一個被識別出來。

謝謝!

您的第二個以 CGAffineTransformIdentity 開始。 相反,傳入 zt。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM