2

我有一个程序可以创建一个小的 UIImageView 来响应触摸,这样你就可以在超级视图周围拖动它。

我添加了一个 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 开始 iPhone 4 开发一书中的“捏我”示例。

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

谢谢!

4

1 回答 1

3

contentScaleFactor 没有做你认为它做的事情......你想要的是替换这一行:

initialScale = dragImage.contentScaleFactor; 

initialScale = dragImage.transform.a;

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

于 2011-08-01T21:51:31.040 回答