开发者

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

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜