使用 Swift 在单个 UIView 上同时进行多个动画
Posted
技术标签:
【中文标题】使用 Swift 在单个 UIView 上同时进行多个动画【英文标题】:Multiple Simultaneous Animations on Single UIView using Swift 【发布时间】:2015-01-31 07:58:14 【问题描述】:我已经使用 UIView 动画创建了一个动画块 - 但是对于玩家键入的每个字母,动画都会在 UITextView 上触发(这是一个打字游戏)。输入新字母的那一刻,它会立即完成前一个角色的动画——不可能有重叠。如何在不中断每个动画的情况下允许多个动画开始和结束?
当前动画块:
UIView.transitionWithView(textViewForPlayer, duration: 0.1, options: .BeginFromCurrentState | .TransitionCrossDissolve | .AllowAnimatedContent, animations:
self.textForPlayer.addAttribute(
NSForegroundColorAttributeName,
value: UIColor.clearColor(),
range: nsRangeOfTextShown)
self.textViewForPlayer.attributedText = self.textForPlayer
, completion: finished in
UIView.transitionWithView(self.textViewForPlayer, duration: 2.1, options: .BeginFromCurrentState | .TransitionCrossDissolve | .AllowAnimatedContent, animations:
self.textForPlayer.addAttribute(
NSForegroundColorAttributeName,
value: UIColor.greenColor(),
range: nsRangeOfTextShown)
self.textViewForPlayer.attributedText = self.textForPlayer
, completion: finished in
)
println("FINISHED2")
)
【问题讨论】:
【参考方案1】:如果我对您的理解正确,并且您希望每个字母都完成自己的动画,而不管用户是否输入了下一个字母,我建议您为每个动画字母制作单独的视图。然后,在字母的完成块中,删除动画视图并将字母静态添加到 UITextView。
【讨论】:
以上是关于使用 Swift 在单个 UIView 上同时进行多个动画的主要内容,如果未能解决你的问题,请参考以下文章
Swift + Autolayout:旋转 UILabel,保持在 UIView 旁边
一个 UIView Swift 中的多个 TableViews - 如何同时显示