Ser*_*nce 4 iphone cocoa-touch core-graphics objective-c ios
我想知道是否有人知道如何UIPinchGestureRecognizer
确定比例值,或者是否有一个公式我可以用来计算新的比例值?
我有一个应用程序,我附上UIPinchGestureRecognizer
到imageView
,在某些特定情况下,我需要手动调整的比例,如果它缩小了imageView
如此这般经过屏幕的某一点.谢谢.
给定两个初始点(触摸),使用毕达哥拉斯定理计算它们之间的距离.让这个距离称为"initial distance"
.
对于每个连续的点更新,重新计算点之间的距离,并将该距离称为"new distance"
.
scale = "new distance" / "initial distance".
Run Code Online (Sandbox Code Playgroud)
如果有人实际上不知道...毕达哥拉斯定理是:
sqrtf(powf(b.x - a.x, 2.0f) + powf(b.y - a.y, 2.0f))
理解缩放公式很简单......如果你的手指与你开始捏合时相距两倍,那么缩放应该是2.0(2x) - 所以插入一些数字...最初相距50px ... 100px现在分开= 100/50 = 2
我通过做一些逆向工程找到了我需要的东西。正如大多数人都知道谁已经使用 UIPinchGestureRecognizer 实现了缩放方法一样,您最终会得到以下代码行:
GFloat nextScale = 1 - (previousScale - [sender scale]);
Run Code Online (Sandbox Code Playgroud)
这是根据 UIPinchGestureRecognizer 给出的值计算的 nextScale,但是我需要制作自己的自定义比例,因为用户已经缩放超过了我设置的边界。因此,我确定了需要将 imageview 缩小到的宽度,并通过将其设置为比例来确定所需的 adjustmentScale:(nextScale / adjustmentScale) = (nextWidth / adjustmentWidth)。
然后,我将 adjustmentScale 重新插入到上述公式中,以确定我的新规模金额的 [发送方规模]:[发送方规模] = AdjustedScale - 1 - previousScale。
所以现在我可以使用该金额来设置下次需要的 previousScale 值。
归档时间: |
|
查看次数: |
4018 次 |
最近记录: |