使用捏合手势缩放UIImageView的问题

时间:2011-08-01 21:21:54

标签: iphone ios uiimageview cgaffinetransform

我有一个程序可以创建一个响应触摸的小UIImageView,这样你就可以在superview上拖动它。

我添加了一个UIPinchGestureRecognizer,以便上下缩放图像。使用当前代码,图像可以完美地向上和向下缩放,但在新的捏合手势开始时以1.0的比例重新开始。

我尝试使用contentScaleFactor来获取初始的ImageView比例,但它总是1.0,所以下面的代码显然无法正常工作。

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

    }


}

此代码改编自Apress Beginning iPhone 4开发手册中的“Pinch me”示例。

由于contentScaleFactor不起作用,我是否需要使用核心图形属性? CGAffineTransformScale是否与它有关?

谢谢!

1 个答案:

答案 0 :(得分:3)

contentScaleFactor不会按照您的想法执行...您想要的是替换此行:

initialScale = dragImage.contentScaleFactor; 

initialScale = dragImage.transform.a;

...你将成为一个快乐的露营者(“a”代表当前应用于dragImage的转换矩阵的x比例因子)。