3

我一直在研究 CGAffineTransforms,想知道是否有办法让您查看并放大 x、y 坐标。我使用以下功能缩小了比例:

       CGAffineTransformMakeScale(4.00 ,4.00);

但是我不确定如何将缩放与可能的 x,y 坐标联系起来。有没有人做过这样的事情?我可能不正确地使用这些功能吗?

       -(void)buttonSelected:(id)sender
       {
          UIButton *b = sender;
          CGPoint location = b.frame.origin;

          [UIView animateWithDuration:1.3f delay:0.0f options:UIViewAnimationCurveEaseIn animations:^{
               CGAffineTransform totalTransform =
               CGAffineTransformMakeTranslation(-location.x  , -location.y );
               totalTransform = CGAffineTransformScale(totalTransform, 4.0f, 4.0f);
               totalTransform = CGAffineTransformTranslate(totalTransform, location.x , location.y );
               [self.view setTransform:totalTransform];
           }completion:^(BOOL finished) {
           }];

       }
4

1 回答 1

5

您可以构建一个执行三个步骤的转换:

  • 将要缩放的点移动到图层的中心;
  • 规模;
  • 将物体向后移动,使原来的中心回到中心。

所以,例如

// to use a point that is (109, 63) from the centre as the point to scale around
CGAffineTransform totalTransform =
                  CGAffineTransformMakeTranslation(-109.0f, -63.0f);
totalTransform = CGAffineTransformScale(totalTransform, 4.0f, 4.0f);
totalTransform = CGAffineTransformTranslate(totalTransform, 109.0f, 63.0f);

或者,可以说更简单地调整view.layer's anchorPoint。第二个想法的问题是,当你第一次调整锚点时,你会立即得到变换,因为所有其他定位都是以中心为单位的。

于 2013-01-28T20:31:36.810 回答