Avant d'expliquer mon problème, il est important de dire que j'ai déjà implémenté la suggestion faite dans cette question et je pense que mes doutes sur cette méthode animateWithDuration
sont assez différents, malgré les deux questions ayant un titre très similaire.
Donc, je suis un débutant Swift et je fais quelques petits projets dans Swift, basés sur des démos Objective C précédentes que j'ai faites auparavant.
Voici mon code Objective C:
- (void)moveSideBarToXposition: (int) iXposition{
[UIView animateWithDuration:0.5f
delay:0.1
options: UIViewAnimationOptionTransitionNone
animations:^{ self.mainView.frame = CGRectMake(iXposition, 20, self.mainView.frame.size.width, self.mainView.frame.size.height); }
completion:^(BOOL finished){
if (self.isSidebarHidden==YES) {
self.isSidebarHidden = NO;
}
else{
self.isSidebarHidden = YES;
}
}];
}
Et voici ma Swift:
func moveSideBarToXposition(iXposition: Float) {
UIView.animateWithDuration(0.5, delay: 1.0, options: UIViewAnimationTransition.None, animations: { () -> Void in
self.contentView.frame = CGRectMake(iXposition, 20, self.contentView.frame.size.width, self.contentView.frame.size.height)
}, completion: { (finished: Bool) -> Void in
if isMenuHidden == true {
isMenuHidden = false
} else {
isMenuHidden = true
}
})
}
Et je reçois cette erreur.
Impossible d'appeler 'animateWithDuration' avec une liste d'arguments de type '(Double, delay: Double, options: UIViewAnimationTransition, animations: () -> Void, complétion: (Bool) -> Void)'
J'ai lu la documentation mais je ne sais pas vraiment quel est le problème.
Btw, je travaille sur Xcode 7 et Swift 2.0
Vous passez une énumération de type UIViewAnimationTransition
à un argument qui requiert le type UIViewAnimationOptions
(options
argument)
Voici la syntaxe correcte avec la valeur d'énumération correcte:
func moveSideBarToXposition(iXposition: Float) {
let convertedXposition = CGFloat(iXposition)
UIView.animateWithDuration(0.5, delay: 1.0, options: UIViewAnimationOptions.TransitionNone, animations: { () -> Void in
self.contentView.frame = CGRectMake(convertedXposition, 20, self.contentView.frame.size.width, self.contentView.frame.size.height)
}, completion: { (finished: Bool) -> Void in
// you can do this in a shorter, more concise way by setting the value to its opposite, NOT value
isMenuHidden = !isMenuHidden
})
}