我有一个图像视图,我想在不保持纵横比的情况下捏合以重新缩放。为了做到这一点,我认为这可能是可行的:
- 使用两个捏合手势识别器,一个水平拉伸,一个垂直拉伸。
- 使用一个捏合识别器,但一个接一个地应用两个变换。
这是我的捏处理功能:
- (void) pinch:(UIPinchGestureRecognizer *)recognizer {
static CGRect initialBounds;
if (recognizer.state == UIGestureRecognizerStateBegan)
{
initialBounds = imageView.bounds;
}
CGFloat factor = [(UIPinchGestureRecognizer *)recognizer scale];
//scale horizontally
CGAffineTransform zt = CGAffineTransformScale(CGAffineTransformIdentity,
factor-(1.0-factor), 1.0);
imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);
//now scale vertically
zt = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, factor);
imageView.bounds = CGRectApplyAffineTransform(initialBounds, zt);
return;
}
出于某种原因,转换只是垂直进行(最后一个)。我尝试将第二个 CGRectApplyAffineTransform 的第一个参数更改为 imageView.bounds,但它仍然不起作用。
谁能告诉我哪里出错了?
此外,当使用两个捏合手势识别器时,会发生同样的事情——实际上只有一个被识别。
谢谢!