0
是否可以通过使用指定点作为锚点来缩放图像,即图像从此处“增长”出来?缩放图像锚定在cetain点
是否可以通过使用指定点作为锚点来缩放图像,即图像从此处“增长”出来?缩放图像锚定在cetain点
缩放不是基于一个点。你想要做的就是移动它,以便新图像和原始图像上的对应点位于同一点。要做到这一点,只需调整图像的(x,y)位置即可。使用边缘的比例距离乘以尺寸的差异。
你可以做这样的事情(基于使用UIPinchGesureRecognize的解决方案,但你可以明白...)。 这是为gestureRecognizer调用的选择器:
CGPoint newDistanceFromCenter;
CGPoint distanceFromCenter;
- (void) scale:(id)sender
{
UIPinchGestureRecognizer *recognizer = (UIPinchGestureRecognizer*)sender;
if(recognizer.state == UIGestureRecognizerStateBegan)
{
CGPoint pinchPoint = [recognizer locationInView:self];
distanceFromCenter.x = self.center.x - pinchPoint.x;
distanceFromCenter.y = self.center.y - pinchPoint.y;
}
else if(recognizer.state == UIGestureRecognizerStateChanged)
{
CGAffineTransform currentTransform = self.transform;
CGFloat scale = recognizer.scale;
newDistanceFromCenter.x = (distanceFromCenter.x * scale);
newDistanceFromCenter.y = (distanceFromCenter.y * scale);
CGPoint center = scalingImage_.center;
center.x -= (distanceFromCenter.x - newDistanceFromCenter.x);
center.y -= (distanceFromCenter.y - newDistanceFromCenter.y);
self.center = center;
distanceFromCenter = newDistanceFromCenter;
self.transform = CGAffineTransformScale(currentTransform, scale, scale);
recognizer.scale = 1;
}
}