Swift:链式 UIView 动画永远重复? Obj-C 代码不可移植

Posted

技术标签:

【中文标题】Swift:链式 UIView 动画永远重复? Obj-C 代码不可移植【英文标题】:Swift: chain UIView animations that repeat forever? Obj-C code not portable 【发布时间】:2015-05-06 14:45:34 【问题描述】:

This post 描述了如何在 Objective-C 中链接重复的 UIView 动画。但是,它需要 performSelector,这在 Swift 中似乎不可用。

如何在 Swift 中链接重复的 UIView 动画?目标是创建一个动画来摇晃/摆动 UIView。

【问题讨论】:

您是否尝试过使用animateWithDuration 制作动画,然后将options 块设置为.Repeat 是 @CeceXX 但是 .Repeat 意味着其他动画永远不会被调用,因为完成块永远不会被调用。 你不能把你的代码放在一个函数中,然后在完成块中调用这个函数吗? 为什么反对票??? 我同意@Crashalot 我不知道为什么会反对??这是一个非常有效的问题,不,下面的答案不能回答这个问题——如果你使用 .Repeat 动画——永远不会调用完成块!!就像作者所说.如果有人知道如何重复已经链接的动画,那么请回答 【参考方案1】:

怎么样:

var wobble = true

func wobbleLeft() 

    if !wobble 
        return
    

    UIView.animateWithDuration(0.5, animations:  () -> Void in
        // Animate wobble to left
        )  (finished) -> Void in
            self.wobbleRight()
    


func wobbleRight() 

    if !wobble 
        return
    

    UIView.animateWithDuration(0.5, animations:  () -> Void in
        // Animate wobble to right
        )  (finished) -> Void in
            self.wobbleLeft()
    

首先调用wobbleLeft(),完成后它会调用wobbleRight()。要停止摆动,只需设置wobble = false

【讨论】:

这个序列如何重复?感谢您的帮助!

以上是关于Swift:链式 UIView 动画永远重复? Obj-C 代码不可移植的主要内容,如果未能解决你的问题,请参考以下文章

链式 UIView 动画,每个动画都包含循环内的完成块 [重复]

Swift 3 UIView 动画

动画 UIView 背景颜色 swift

在 Swift 中平滑扩展 UIView 动画

永远旋转 UIView 360° [重复]

使用 Swift 在单个 UIView 上同时进行多个动画