我想知道是否有人知道UIPinchGestureRecognizer scale值是如何确定的,或者是否有一个公式可以用来计算新的scale值?
我有一个应用程序,我在imageView上附加了一个UIPinchGestureRecognizer,在某些特定的情况下,如果缩放缩小了imageView,那么我需要手动重新调整它,使其超过屏幕的某个点。谢谢。
发布于 2011-11-03 12:47:15
我通过做一些逆向工程找到了我需要的东西。正如你们大多数人所知道的,谁用UIPinchGestureRecognizer实现了scale方法,您最终得到的是下面这行代码:
GFloat nextScale = 1 - (previousScale - [sender scale]);这是根据UIPinchGestureRecognizer给出的值计算的nextScale,但是我需要创建自己的自定义比例,因为用户已经超出了我设置的边界。因此,我确定了需要缩小图像视图的宽度,并通过将其设置为一定比例来确定所需的adjustedScale:(nextScale / adjustedScale) = (nextWidth / adjustedWidth)。
然后,我将发送者比例重新插入到上面的公式中,以确定新比例的发送者比例是多少: adjustedScale scale = AdjustedScale -1- previousScale。
所以现在我可以使用这个数值来设置下一次需要的previousScale值。
发布于 2011-11-02 14:26:39
给定两个初始点(触点),使用勾股定理计算它们之间的距离。让这个距离称为"initial distance"。
对于这些点的每次连续更新,重新计算点之间的距离,并将此距离称为"new distance"。
scale = "new distance" / "initial distance". 以防有人不知道..。勾股定理是:
sqrtf(powf(b.x - a.x, 2.0f) + powf(b.y - a.y, 2.0f))
很容易理解缩放公式……如果你的手指距离是你开始握手时的两倍,缩放应该是2.0 (2倍)-所以输入一些数字……最初相隔50px ...现在间隔100px = 100 / 50 =2
https://stackoverflow.com/questions/7976502
复制相似问题