使用 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 - 如何同时显示

Swift:动画后将 UIView 的帧重置为其约束

以编程方式在 UIView 上添加 UITextField Swift

在视图控制器上放置无限的uiview对象数组[关闭]

在 Swift 中的 UIView 上绘制网格