首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定UIPinchGestureRecognizer scale值?

如何确定UIPinchGestureRecognizer scale值?
EN

Stack Overflow用户
提问于 2011-11-02 14:19:00
回答 2查看 4.1K关注 0票数 5

我想知道是否有人知道UIPinchGestureRecognizer scale值是如何确定的,或者是否有一个公式可以用来计算新的scale值?

我有一个应用程序,我在imageView上附加了一个UIPinchGestureRecognizer,在某些特定的情况下,如果缩放缩小了imageView,那么我需要手动重新调整它,使其超过屏幕的某个点。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-03 12:47:15

我通过做一些逆向工程找到了我需要的东西。正如你们大多数人所知道的,谁用UIPinchGestureRecognizer实现了scale方法,您最终得到的是下面这行代码:

代码语言:javascript
复制
GFloat nextScale = 1 -  (previousScale - [sender scale]);

这是根据UIPinchGestureRecognizer给出的值计算的nextScale,但是我需要创建自己的自定义比例,因为用户已经超出了我设置的边界。因此,我确定了需要缩小图像视图的宽度,并通过将其设置为一定比例来确定所需的adjustedScale:(nextScale / adjustedScale) = (nextWidth / adjustedWidth)。

然后,我将发送者比例重新插入到上面的公式中,以确定新比例的发送者比例是多少: adjustedScale scale = AdjustedScale -1- previousScale。

所以现在我可以使用这个数值来设置下一次需要的previousScale值。

票数 1
EN

Stack Overflow用户

发布于 2011-11-02 14:26:39

给定两个初始点(触点),使用勾股定理计算它们之间的距离。让这个距离称为"initial distance"

对于这些点的每次连续更新,重新计算点之间的距离,并将此距离称为"new distance"

代码语言:javascript
复制
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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7976502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档