当操作正在进行时使用 UIPinchGestureRecognizer 缩放图像视图时,图像“尝试”保持在初始 frame.origin。
即使在平移手势将图像移动到另一个位置之后,捏合也会立即将其移回初始位置。
演示手势的 Apple Touches 示例应用程序的公然副本的所有代码。
下面是捏代码,我已经在 github 上推送了一个示例应用程序来展示这种行为:https ://github.com/atokubi/TestImageManipulation
提前感谢你的帮助。
- (IBAction)scaleItem:(UIPinchGestureRecognizer *)gestureRecognizer {
[self adjustAnchorPointForGestureRecognizer:gestureRecognizer];
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
[gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
[gestureRecognizer setScale:1];
}
}
- (void)adjustAnchorPointForGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer{
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
UIView *piece = gestureRecognizer.view;
CGPoint locationInView = [gestureRecognizer locationInView:piece];
CGPoint locationInSuperview = [gestureRecognizer locationInView:piece.superview];
piece.layer.anchorPoint = CGPointMake(locationInView.x / piece.bounds.size.width, locationInView.y / piece.bounds.size.height);
piece.center = locationInSuperview;
}
}