2010-11-03 89 views

回答

1

缩放不是基于一个点。你想要做的就是移动它,以便新图像和原始图像上的对应点位于同一点。要做到这一点,只需调整图像的(x,y)位置即可。使用边缘的比例距离乘以尺寸的差异。

0

你可以做这样的事情(基于使用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; 
    } 
}