【发布时间】:2016-11-02 21:25:47
【问题描述】:
我要做的是循环布置几个 UIButtons,每当点击任何按钮时,该按钮都应该动画到顶部位置(圆圈的顶部,即圆圈中的第一个按钮),因此所有其他按钮应该适当地制作动画,以便点击的按钮出现在顶部。
现在,我已经使用
double perAngle = 2 * M_PI / BUTTONS_COUNT;
for (int i = 0; i < BUTTONS_COUNT; i++) {
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(sin(perAngle * i) + basePoint.x, cos(perAngle * i) + basePoint.y, Width, Height)];
[self.View addSubView:btn];
}
我正在使用 CAAnimation 围绕 z 轴旋转此视图,以便在点击任何按钮时看起来所有按钮都在循环移动。问题是我无法决定旋转的角度,因此每次只有轻按的按钮到达顶部,而不是任何其他按钮。
或者任何其他完全不同的方法来实现这一点?
【问题讨论】:
-
你的问题太含糊了。你需要足够详细地描述你正在尝试做的事情,以至于不是你的人知道你正在尝试做什么。您发布的代码显示将按钮放置在一个圆圈中,但没有显示您的旋转代码。我们需要查看您需要帮助的代码。
-
在我看来,如果您希望能够将任意按钮旋转到顶部,然后再次点击,然后从已经 -旋转位置到顶部。
-
您不需要做三角函数或手动设置框架。相反,您将所有按钮放在圆圈的中间,然后将变换设置为反向旋转它们,平移它们然后绕中心点运行。仅供参考,iOS 中的坐标是笛卡尔坐标系,在 Y 中按 -1 缩放,即 Y 轴指向下方,X 轴指向右侧,角度 0 位于右侧,90 度位于下方,180 度位于左侧,270 度位于上方。顺时针旋转。
标签: ios objective-c core-animation trigonometry