【问题标题】:Rotating the hands of a round gauge/meter with touch通过触摸旋转圆形量规/仪表的指针
【发布时间】:2013-04-17 17:27:53
【问题描述】:

我有一个看起来像圆形仪表的 UIView,它的手围绕中心锚点旋转(想想:速度计)。我让它工作,所以手旋转到使用层变换给定值的正确位置。

我希望用户能够将仪表的手拖放到另一个值。我在弄清楚这种交互时遇到了麻烦-我可以在手上使用 UIPanGestureRecognizer 来获取平移点,但是如何从中计算调整后的手角度?这实际上似乎更像是一个几何问题。

另外,因为它是一个圆形米,我不想只根据平移点的 x 或 y 分量来调整角度。

【问题讨论】:

  • “针”是视图吗?还是你只是在画“针”?
  • 针是一个 UIImageView。我让它使用 anchorPoint 固定中心并使用 CATransform3DMakeRotation 旋转。

标签: ios objective-c uiview quartz-core


【解决方案1】:

如果我的理解正确,这是简单的几何:在极坐标系和笛卡尔坐标系之间转换。使用触摸点的位置来找到围绕圆的角度(就像在极坐标中一样):

CGPoint touchPoint = ...;
double touchTheta = atanf(touchPoint.x, touchPoint.y);

然后你可以做一些事情,比如计算针的端点,给定它的长度(半径):

CGPoint needleEndpoint = (CGPoint){needleLength * sinf(touchTheta),
                                   needleLength * cosf(touchTheta)};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多