Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift animate UIView with multiple options

How does swift handle multiple options when animating UIView? I tried

UIView.animateWithDuration(0.2, delay: 0.0, options: .Repeat | .Autoreverse, animations: {self.alpha = 0.0}, completion: nil)

but seems to confuse the | with a bitwise operator:

Undefined symbols for architecture i386:
 "__TFSsoi1oUSs17_RawOptionSetType_USs21BitwiseOperationsTypeSs9Equatable__FTQ_Q__Q_", referenced from:
      __TFC17TextDrawing10cursorViewW8blinkingSb in cursorView.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I am using the latest Xcode version from the AppStore.

like image 347
Hristo Avatar asked Oct 07 '14 07:10

Hristo


3 Answers

Swift 2:

UIView.animateWithDuration(0.2, delay: 0.0, options: [.Repeat, .Autoreverse], animations: {self.alpha = 0.0}, completion: nil)

Swift 3, 4, 5

UIView.animate(withDuration: 0.2, delay: 0.0, options: [.repeat, .autoreverse], animations: {self.alpha = 0.0}, completion: nil)
like image 79
mxcl Avatar answered Nov 13 '22 14:11

mxcl


The preview answer won't work in nowdays swift. The good answer was given by @mxcl.

If despite all you want to use this form, you have to retrieve the rawValue and rebuild a new UIViewAnimationOptions with an inclusive OR mask.

UIViewAnimationOptions(rawValue:(UIViewAnimationOptions.Autoreverse.rawvalue | UIViewAnimationOptions.Repeat.rawValue))
like image 2
jcnm Avatar answered Nov 13 '22 15:11

jcnm


Swift 3: Tested and ok:

UIView.animate(withDuration: 0.2, delay: 0.0, options: [.repeat, .autoreverse], animations: {
            }, completion: nil)
like image 1
Franck Avatar answered Nov 13 '22 13:11

Franck