Swift UIView动画块增量错误

Swift UIView Animation block increment error

我有一个 UIView 动画块,我想 运行 数组中的段落。

            UIView.animateWithDuration(0.4, delay: 0.2, options: .CurveEaseOut, animations: {
                var frame = self.textViewForPlayer.frame
                frame.origin.y += 20
                self.textViewForPlayer.frame = frame
                }, completion: { finished in
                    UIView.animateWithDuration(0.4, delay: 0, options: .CurveEaseOut, animations: {
                        var frame = self.textViewForPlayer.frame
                        frame.origin.y -= 80
                        self.textViewForPlayer.frame = frame
                        }, completion: { finished in
                        })
                    }
            )

            textViewForPlayer = paragraphs[++currentParagraph]

奇怪的是 - 第一个块(完成前的第一个动画)运行是第一段的动画,但第一个完成块中的链接动画 运行是第二段(不知何故 "paragraphs[++currentParagraph]" 在两个动画块之间执行。

不确定这是怎么发生的,增量代码在动画本身之后,所以看起来很奇怪,甚至可能是导致它在中间执行的错误。

您的问题是动画和完成块在稍后调用,但 animateWithDuration returns 立即调用。

块范围之外的所有内容都将 运行 与动画延迟或动画完成无关。

考虑将增量放在最后完成的块中。这应该在两个动画结束时增加数字。

...,completion: { finished in
              textViewForPlayer = paragraphs[++currentParagraph]
             })