我正在使用以下库来旋转,缩放和移动图像ZoomRotatePanImageView
问题在于,如果在旋转后使用运动图像,则会丢失该图像,因为它会尝试根据其具有的新角度而不是平移手势方向来运动图像。
也就是说,当将图像旋转180度然后尝试将其向右移动时,它会向左移动(所有方向都相反)
UIPanGestureRecognizer
这是CGAffineTransformTranslate
用于处理图像的代码
- (IBAction) handlePan:(UIPanGestureRecognizer*)recogniser {
if (recogniser.state == UIGestureRecognizerStateCancelled) {
recogniser.view.transform = originalImageViewTransform;
return;
}
if (recogniser.state == UIGestureRecognizerStateBegan) {
originalImageViewTransform = recogniser.view.transform;
}
CGAffineTransform transform = recogniser.view.transform;
CGPoint translation = [recogniser translationInView:self.superview];
transform = CGAffineTransformTranslate(transform, translation.x, translation.y);
[recogniser setTranslation:CGPointZero inView:self]; // This line means we don't need prevRotation
if (recogniser.state == UIGestureRecognizerStateEnded) {
// The gesture ended, so push an undo action before setting the transform.
[self setTransform:transform ofView:recogniser.view undoTransform:originalImageViewTransform];
if ([self.delegate respondsToSelector:@selector(saveImageStateWithTag:)])
[self.delegate saveImageStateWithTag:self.tag];
} else {
// The gesture changed but didn't end, so don't push an undo action.
recogniser.view.transform = transform;
}
}
那么如何使图像根据原始尺寸空间而不是新的尺寸空间移动呢?
将以下行从
CGPoint translation = [recogniser translationInView:self.superview];
到
CGPoint translation = [recogniser translationInView:self];
将解决您的问题
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句