使用Swift的UIViewanimation选项
如何将UIViewAnimationOptions
设置为UIView
animation块中的.Repeat
:
UIView.animateWithDuration(0.2, delay:0.2 , options: UIViewAnimationOptions, animations: (() -> Void), completion: (Bool) -> Void)?)
Swift 3
和以前几乎一样:
UIView.animate(withDuration: 0.2, delay: 0.2, options: UIViewAnimationOptions.repeat, animations: {}, completion: nil)
除了你可以省略完整的types:
UIView.animate(withDuration: 0.2, delay: 0.2, options: .repeat, animations: {}, completion: nil)
你仍然可以结合选项:
UIView.animate(withDuration: 0.2, delay: 0.2, options: [.repeat, .curveEaseInOut], animations: {}, completion: nil)
Swift 2
UIView.animateWithDuration(0.2, delay: 0.2, options: UIViewAnimationOptions.Repeat, animations: {}, completion: nil) UIView.animateWithDuration(0.2, delay: 0.2, options: .Repeat, animations: {}, completion: nil) UIView.animateWithDuration(0.2, delay: 0.2, options: [.Repeat, .CurveEaseInOut], animations: {}, completion: nil)
大多数在Swift 2.0之前是枚举的Cocoa Touch'option'集合现在已经被改为结构体, UIViewAnimationOptions
就是其中之一。
而UIViewAnimationOptions.Repeat
以前被定义为:
(半伪码)
enum UIViewAnimationOptions { case Repeat }
现在定义为:
struct UIViewAnimationOption { static var Repeat: UIViewAnimationOption }
重点是,为了实现之前使用位掩码(.Reverse .Reverse | .CurveEaseInOut
)所实现的function,您现在需要将选项放在数组中,或者直接放在options
参数之后,或者在使用之前定义在variables中:
UIView.animateWithDuration(0.2, delay: 0.2, options: [.Repeat, .CurveEaseInOut], animations: {}, completion: nil)
要么
let options: UIViewAnimationOptions = [.Repeat, .CurveEaseInOut] UIView.animateWithDuration(0.2, delay: 0.2, options: options, animations: {}, completion: nil)
有关更多信息,请参阅user @ 0x7fffffff中的以下答案: Swift 2.0 – 二元运算符“|”不能应用于两个UIUserNotificationType操作数