快速旋转轮盘4

时间:2018-10-10 17:29:45

标签: ios swift uiviewanimation

我最近开始学习编码。我正在尝试使用旋转轮盘制作一个应用程序,并在网上找到它。我可以使轮盘旋转,但每次旋转时它都会在相同的确切位置结束,因此我希望它在每次新旋转时都在随机的位置结束。我希望有人可以帮忙。预先感谢!

UIView.animate(withDuration: 5, delay: 0, options: [UIView.AnimationOptions.curveEaseOut], animations: {

        for _ in 0..<10 {
            self.ruleRut.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi * 1))
            self.ruleRut.transform = CGAffineTransform(rotationAngle: 0)
        }
    })

1 个答案:

答案 0 :(得分:1)

这里有几个问题。首先,这是一个涉及几个问题的问题,其中Swift最不重要。让我们分解一下样本中发生的事情:

UIView.animate(withDuration: 5, delay: 0, options: 
[UIView.AnimationOptions.curveEaseOut], animations:

在这里,您使用的是UIKit(不是Swift特有的)动画助手,它将在5秒钟内以最终状态运行。在结束语中,您定义结束状态是什么,它将使用ease-out曲线(减速)以动画形式到达终点。

{
    for _ in 0..<10 {
        self.ruleRut.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi * 1))
        self.ruleRut.transform = CGAffineTransform(rotationAngle: 0)
    }
})

在这里,这有点令人困惑。您正在告诉UIKit,由于这个for循环,您希望ruleRut旋转pi弧度(180度),然后从0旋转到9度(从0旋转到9度),所以含义有点丢失。这可能有效,但希望它能成为黑客。

关于为什么它总是停在同一位置的问题,您正在以180度的增量调用旋转变换,并且以偶数的旋转数结束总是从起点开始。您需要将旋转的弧度随机化以达到所需的终点。您还必须处理视图旋转的方向,这超出了此答案的范围,但基本上涉及使用更复杂的显式动画,或确保动画发生在小于180度的位置。无论如何,最好的选择可能是从以下主题的Apple文档开始,然后链接到该文档,然后跟随Ray Wenderlich这样的人讲授有关iOS动画的教程。

可以在here

中找到有关UIView动画的Apple文档。

Ray Wenderlich动画教程可以找到here

希望这会有所帮助,欢迎来到iOS世界!