我尝试放大我在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);
}
答案 0 :(得分:3)
图层的内容相对于锚点绘制自身。实际上,图层的anchorPoint
和position
(位置大致对应于视图的center
)是两个不同坐标系中完全相同的点:锚点位于层的单位坐标空间和位置在超层坐标空间中。我对所有这些in this article over at the iDeveloper blog都有一个非常详细的解释。
简短解决方案:在设置锚点后设置图层的位置。由于具有变换,设置框架将不起作用(有关详细信息,请参阅框架属性的文档)。
另一种解决方案(如果你对位置 - 锚点 - 舞蹈感到烦恼)是仅使用变换。如果是这种情况,你会连接翻译,缩放&翻译以获得最终的转换。我写的基本相同的东西,但在this article轮换。只需用比例代替旋转:D