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]
})
我有一个 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]
})