缩放并更改anchorPoint

时间:2013-09-09 12:20:36

标签: iphone ios objective-c image scale

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

1 个答案:

答案 0 :(得分:3)

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

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

另一种解决方案(如果你对位置 - 锚点 - 舞蹈感到烦恼)是仅使用变换。如果是这种情况,你会连接翻译,缩放&翻译以获得最终的转换。我写的基本相同的东西,但在this article轮换。只需用比例代替旋转:D