0

我尝试放大单击 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);
}
4

1 回答 1

3

图层的内容相对于锚点绘制自身。实际上图层的 theanchorPoint和 the position(位置大致对应于center视图的 )在两个不同的坐标系中是完全相同的点:锚点在图层的单位坐标空间中,位置在 superlayers 坐标空间中. 在 iDeveloper 博客上的这篇文章中,我对所有这些都有非常详细的解释。

简短的解决方案:设置锚点后设置图层的位置。由于有变换,设置框架将不起作用(有关更多信息,请参阅框架属性的文档)。

另一种解决方案(如果您对位置锚点舞蹈感到恼火)是仅使用变换。如果这种情况,您将连接翻译、缩放和翻译以获得最终的转换。我在这篇文章中写过基本相同的东西,但关于轮换。只需用比例代替旋转:D

于 2013-09-09T12:36:54.070 回答