2014-10-07 14 views
14

In che modo gestisce rapidamente più opzioni durante l'animazione di UIView? Ho provatoAnimazione rapida di UIView con più opzioni

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

ma sembra confondere la | con un operatore bit per bit:

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) 

Sto usando la versione più recente Xcode da AppStore.

+1

sembra che non ci sono problemi con il codice. Hai provato i dati derivati ​​cancellati per il progetto e la pulizia della build? – Kirsteins

+0

Ho pulito la build (Prodotto -> Pulisci) e ho cancellato i dati derivati. Dà ancora lo stesso errore. – Hristo

+1

Prova anche una cartella di compilazione pulita: Progetto -> (tieni premuto il tasto Alt) -> Pulisci cartella build – zisoft

risposta

29

Swift 2:

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

Swift 3

UIView.animate(withDuration: 0.2, delay: 0.0, options: [.repeat, .autoreverse], animations: {self.alpha = 0.0}, completion: nil) 
0

Da the docs sembra che quello che stai facendo sia corretto?

Hai provato a racchiudere tra parentesi le opzioni?

In alternativa, inserire le opzioni in una variabile e provare?

+0

Ho provato entrambi e dà lo stesso errore durante la compilazione. – Hristo

+0

@Hristo Hai provato a farvi riferimento completamente? per esempio mettiamo "UIViewAnimationOptions.Repeat' ecc ... – Fogmeister

+0

Sì, l'ho già fatto. – Hristo

-2

Si tratta di codice di lavoro per me:

 UIView.animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.Autoreverse | UIViewAnimationOptions.Repeat, animations: {() -> Void in 
      disc.layer.transform = CATransform3DMakeScale(1.0, 1.0, 1.0) 
      }) { (success) -> Void in 
     } 
2

La risposta di anteprima non funziona in oggigiorno sWIFT. @mxcl la buona risposta è stata data.

Se nonostante tutto si desidera utilizzare questo modulo, è necessario recuperare il valore rawValue e ricostruire un nuovo UIViewAnimationOptions con una maschera OR inclusa.

UIViewAnimationOptions(rawValue:(UIViewAnimationOptions.Autoreverse.rawvalue | UIViewAnimationOptions.Repeat.rawValue)) 
1

Swift 3: Testato e ok:

UIView.animate(withDuration: 0.2, delay: 0.0, options: [.repeat, .autoreverse], animations: { 
      }, completion: nil) 
Problemi correlati