首页 > 解决方案 > CGAffineTransform 文档中可能出现的错误

问题描述

在 CGAffineTransform 文档https://developer.apple.com/documentation/coregraphics/cgaffinetransform将点 (x, y) 转换为点 (x',y') 的方程如下: x'=ax+cy+t_x, y'=bx+dy+t_y。考虑我们对视图进行缩放的情况。那么方程变为x'=ax,y'=dy。这意味着根据方程式,缩放后保持在同一位置的点是 (0,0)。但是,保持在同一位置的点是视图的中心。这可以在实践中看到,也可以在此处看到:https ://developer.apple.com/documentation/quartzcore/calayer/1410817-anchorpoint 。

我的问题是:CGAffineTransform 文档中提供的方程式是否确实不正确?

标签: iosswiftuiviewcgaffinetransform

解决方案


我不确定你是从哪里来This means that according to the equations the point that remains at the same position after the scaling is (0,0).的。

如果您只是缩放视图,则中心点本身不会改变,因此t_xt_y不会改变,只有您看到的缩放比例,即系数ax 和dy 会发生变化;因此,当缩放x' = axy' = dy.

例如,如果您在图像上缩放,假设您当前的中心点是图像的中心。如果缩放,您将在图像的中心进行缩放。如果用户滑动图像,那不再是视图上的唯一缩放。

此外,要点(0,0)不一样;唯一保持不变的是中心。假设您可以看到(0,0,400,400)- 的完整图像,点(0,0)位于左上角和(200,200)中心。如果你放大倍数,你现在将(100,100)在左上角和(200,200)中心。注意:(0,0)没有保持不变,但中心保持不变。

答案:没有


推荐阅读