Options d'animation UIView à L'aide de Swift

Comment définir le UIViewAnimationOptions sur .Repeat dans un bloc d'animation UIView:

UIView.animateWithDuration(0.2, delay:0.2 , options: UIViewAnimationOptions, animations: (() -> Void), completion: (Bool) -> Void)?)
38
demandé sur Victor Sigler 2014-06-06 15:51:02

2 réponses

Swift 3

À peu près la même chose qu'avant:

UIView.animate(withDuration: 0.2, delay: 0.2, options: UIViewAnimationOptions.repeat, animations: {}, completion: nil)

Sauf que vous pouvez omettre le type complet:

UIView.animate(withDuration: 0.2, delay: 0.2, options: .repeat, animations: {}, completion: nil)

Et vous pouvez toujours combiner les options:

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)
100
répondu nschum 2016-12-14 23:36:54

La plupart des ensembles d'options Cocoa Touch qui étaient des énumérations antérieures à Swift 2.0 ont maintenant été changés en structures, UIViewAnimationOptions étant l'un d'entre eux.

Alors que UIViewAnimationOptions.Repeat aurait été précédemment défini comme:

(semi-pseudo code)

enum UIViewAnimationOptions {
  case Repeat
}

, Il est maintenant défini comme:

struct UIViewAnimationOption {
  static var Repeat: UIViewAnimationOption
}

Étant donné que, pour réaliser ce qui a été réalisé avant l'utilisation de bitmasks (.Reverse | .CurveEaseInOut), vous devrez maintenant placer les options dans un tableau, soit directement après le paramètre options, soit défini dans une variable avant utilisation:

UIView.animateWithDuration(0.2, delay: 0.2, options: [.Repeat, .CurveEaseInOut], animations: {}, completion: nil)

Ou

let options: UIViewAnimationOptions = [.Repeat, .CurveEaseInOut]
UIView.animateWithDuration(0.2, delay: 0.2, options: options, animations: {}, completion: nil)

Veuillez vous référer à la réponse suivante de l'utilisateur @0x7fffffff pour plus d'informations: Swift 2.0-L'opérateur binaire " | " ne peut pas être appliqué à deux opérandes UIUserNotificationType

13
répondu Kyle Gillen 2017-05-23 12:17:51