我尝试放大单击UIImageView中的图像巫婆的区域。
我使用CGAffineTransformMakeScale进行缩放,并通过单击点坐标更改了imageView.layer.anchorPoint
比例尺有效,但是图像不再居中,我认为我在anchorPoint坐标上是错误的,我发现有很多文章对此进行了讨论,但是它太复杂了

请帮助 !

码:

-(void)gestureTapEvent:(UITapGestureRecognizer *)gesture {
    NSLog(@"doubleclic");

    CGPoint touchPoint = [gesture locationInView:gesture.view];
    NSLog(@"Position of touch: %.3f, %.3f", touchPoint.x, touchPoint.y);

    float newX = touchPoint.x/imageView.frame.size.width;
    float newY = touchPoint.x/imageView.frame.size.height;


    imageView.transform = CGAffineTransformMakeScale(1.5, 1.5);
    imageView.layer.anchorPoint = CGPointMake(newY, newX);
}

最佳答案

图层的内容相对于锚点绘制自身。实际上,图层的anchorPointposition(位置大致对应于视图的center)在两个不同的坐标系中是完全相同的点:锚点位于图层的单位坐标空间中并且位置在上层坐标空间中。我对所有in this article over at the iDeveloper blog都有非常详细的解释。

简短的解决方案:设置锚点后,设置图层的位置。由于进行了转换,因此无法设置框架(有关更多信息,请参见frame属性的文档)。

另一个解决方案(如果您对位置锚点距离感到烦恼)是仅使用变换。如果那样的话,您可以串联转换,缩放和转换以获得最终的转换。除了this article中的轮换,我已经写了差不多相同的东西。只需用刻度代替旋转:D

10-06 07:19