这种动画风格的完成处理程序或函数
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"。这在任何可以想象的上下文中都没有用。
我找不到这种代码风格的动画完成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"。这在任何可以想象的上下文中都没有用。