使用捏合手勢縮放 UIImageView 的問題 (Problem scaling UIImageView with Pinch Gesture)


問題描述

使用捏合手勢縮放 UIImageView 的問題 (Problem scaling UIImageView with Pinch Gesture)

I have a program that creates a small UIImageView that responds to touch so you can drag it around the superview.

I added a UIPinchGestureRecognizer in order to Scale the image up and down. With the current code, the image scales up and down perfectly but restarts at scale 1.0 when a new pinch gesture starts.

I tried using contentScaleFactor to get the initial ImageView scale but it's always 1.0, so clearly the below code won't work properly.

‑ (void)doPinch:(UIPinchGestureRecognizer *)pinch {



if (pinch.state == UIGestureRecognizerStateBegan) {

    initialScale = dragImage.contentScaleFactor;        

    } else {

    CGFloat newScale = initialScale * pinch.scale;

    CGAffineTransform transform = CGAffineTransformMakeScale(newScale,newScale);

    dragImage.transform = transform;

    }


}

This code was adapted from the "Pinch me" example in the Apress Beginning iPhone 4 Development book.

Since contentScaleFactor doesn't work, do I need to use a core graphics property? Does CGAffineTransformScale have something to do with it?

Thanks!

‑‑‑‑‑

參考解法

方法 1:

contentScaleFactor doesn't do what you think it does ... what you want is to replace this line:

initialScale = dragImage.contentScaleFactor; 

with

initialScale = dragImage.transform.a;

... and you'll be a happy camper ("a" represents the x scale factor of the transformation matrix currently applied to dragImage).

(by REDMXpho0)

參考文件

  1. Problem scaling UIImageView with Pinch Gesture (CC BY‑SA 3.0/4.0)

#cgaffinetransform #iphone #iOS #uiimageview






相關問題

CGAffineTransform:將比例應用於翻譯,如何? (CGAffineTransform: apply a Scale to a Translation, how?)

Facebook不尊重AVMutableCompositionTrack上的preferredTransform標誌 (Facebook not Respecting preferredTransform flag on AVMutableCompositionTrack)

使用 CGAffineTransform 時限制 UIImageView 的大小 (Limitting UIImageView size while using CGAffineTransform)

Выгляд павернутай табліцы не бачны ў iOS 6.0 (Rotated Table View is not visible in iOS 6.0)

使用 CGAffineTransformRotate,如何將旋轉設置為 0 (Using CGAffineTransformRotate, how to set rotation to 0)

Hành vi CGAffineTransformRotate không nhất quán giữa chế độ xem và bộ điều khiển chế độ xem (CGAffineTransformRotate behaviour inconsistent between view and view controller)

將 UIView.transform 設置為任意翻譯 CGAffineTransform 什麼都不做 (Setting UIView.transform to arbitrary translate CGAffineTransform does nothing)

使用 CGAfflineTransformMakeScale/Rotation 只做一個動作 (Using CGAfflineTransformMakeScale/Rotation only does one action)

使用 CGAffine 旋轉視圖後的平移 (translation after rotation view using CGAffine)

NSViews 上的 CGAffineTransforms (CGAffineTransforms on NSViews)

旋轉後向一個方向縮放 UIView 時,如何防止傾斜? (How can I prevent skew when scaling a UIView in one direction after rotation?)

使用捏合手勢縮放 UIImageView 的問題 (Problem scaling UIImageView with Pinch Gesture)







留言討論