ios - animations - uiview animate swift 4
UIView.animateWithDuration en Swift 2.0? (1)
Está pasando una enumeración de tipo UIViewAnimationTransition
a un argumento que requiere el tipo UIViewAnimationOptions
(argumento de options
)
Aquí está la sintaxis correcta con el valor enum correcto:
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
})
}
Antes de explicar mi problema, es importante decir que ya implementé la sugerencia hecha en esta pregunta y creo que mis dudas sobre este método animateWithDuration
son bastante diferentes, a pesar de que ambas preguntas tienen un título muy similar.
Entonces, soy un novato de Swift y estoy haciendo algunos pequeños proyectos en Swift, basados en demostraciones anteriores de Objective C que hice antes.
Este es mi código 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;
}
}];
}
Y esta es mi versión 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
}
})
}
Y me sale este error.
No se puede invocar ''animateWithDuration'' con una lista de argumentos de tipo ''(Double, delay: Double, options: UIViewAnimationTransition, animations: () -> Void, complete: (Bool) -> Void)''
Leí la documentación pero en realidad no estoy seguro de cuál es el problema.
Por cierto, estoy trabajando en Xcode 7 y Swift 2.0