这种动画风格的完成处理程序或函数

Completion Handler or function for this style of animation

我找不到这种代码风格的动画完成handler/function。

我没有使用 Animation 块,因为它在动画完成后具有内置的完成功能,因为我需要控制重复过程。

我需要做的是,如果这个动画完成,图像应该是removeFromSuperView()。这个有解决方法吗?

@IBAction func buttonPressed() {
    var repeatCount = Float(10.0)
    var duration = 2.0

    //if finished, remove image using image.removeFromSuperview()

    UIView.beginAnimations(nil, context: nil)
    UIView.setAnimationDuration(duration)
    UIView.setAnimationRepeatCount(repeatCount)
    image.frame = CGRectMake(160, 300, 50, 50)
    UIView.commitAnimations()
}

您真的不应该使用旧式 beginAnimations / commitAnimations 结构。但是如果你打算使用它,那么只需给动画一个带有 setAnimationDelegate: 的委托,并指定一个选择器在动画以 setAnimationDidStopSelector: 结束时调用,正如我在这里描述的那样:

http://www.apeth.com/iOSBook/ch17.html#_modifying_an_animation_block

你真的,真的,应该使用基于块的动画;但如果必须,请在提交动画之前设置委托和回调,由其他 setAnimationXXX 函数正确声明。

// no getters. if called outside animation block, these setters have no effect.
class func setAnimationDelegate(delegate: AnyObject?) // default = nil
class func setAnimationWillStartSelector(selector: Selector) // default = NULL. -animationWillStart:(NSString *)animationID context:(void *)context
class func setAnimationDidStopSelector(selector: Selector) // default = NULL. -animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context

此外,您在此声明的内容

    [UIView.beginAnimations(nil, context: nil)]

是"an array containing the result of beginAnimations, which is Void"。这在任何可以想象的上下文中都没有用。