我有一个程序,可以创建一个响应触摸的小 UIImageView,以便您可以将其拖动到 super View 周围。
我添加了一个 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 Development 书中的“Pinch me”示例。
由于 contentScaleFactor 不起作用,我是否需要使用核心图形属性? CGAffineTransformScale 与它有什么关系吗?
谢谢!
最佳答案
contentScaleFactor 没有做你想象的那样......你想要的是替换这一行:
initialScale = dragImage.contentScaleFactor;
与
initialScale = dragImage.transform.a;
...您将成为一个快乐的露营者(“a”代表当前应用于dragImage的变换矩阵的x比例因子)。
关于iphone - 使用捏合手势缩放 UIImageView 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6904617/