开发者

Problem scaling UIImageView with Pinch Gesture

开发者 https://www.devze.com 2023-03-25 16:58 出处:网络
I have a program that creates a small UIImageView that responds to touch so you can drag it around the superview.

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 Developmen开发者_如何学Got book.

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

Thanks!


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).

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号