ios - animating - Swift 3 UIView animación
uiview animate swift 4 (5)
Actualizar a Swift 3.0
Ver animación de derecha a izquierda como la animación de empuje predeterminada de Apple
//intially set x = SCREEN_WIDTH
view.frame = CGRect(x: ScreenSize.SCREEN_WIDTH, y: ScreenSize.SCREEN_HEIGHT - heightTabBar , width: ScreenSize.SCREEN_WIDTH, height: heightTabBar)
UIView.animate(withDuration: 0.50, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0, options: [], animations: {
//Set x position what ever you want
view.frame = CGRect(x: 0, y: ScreenSize.SCREEN_HEIGHT - heightTabBar , width: ScreenSize.SCREEN_WIDTH, height: heightTabBar)
}, completion: nil)
Desde que actualicé mi proyecto a Swift 3, mis animaciones de restricción de autolayout no funcionan; para ser más específicos, se están ajustando a la nueva posición en lugar de animar.
UIView.animate(withDuration: 0.1,
delay: 0.1,
options: UIViewAnimationOptions.curveEaseIn,
animations: { () -> Void in
constraint.constant = ButtonAnimationValues.YPosition.DefaultOut()
self.layoutIfNeeded()
}, completion: { (finished) -> Void in
// ....
})
Sé que agregaron la clase UIViewPropertyAnimator
pero todavía UIViewPropertyAnimator
que intentarlo.
Primero establezca el nuevo valor para su restricción y luego llame a animar.
self.YOUR_CONSTRAINT.constant = NEW_VALUE
UIView.animate(withDuration: 1.0) {
self.view.layoutIfNeeded()
}
Swift 3.1, Xcode 8.3.2
Este código funciona bien para mí. Cualquier cambio en su vista se animará en cámara lenta.
UIView.animate(withDuration: 3.0, animations: { // 3.0 are the seconds
// Write your code here for e.g. Increasing any Subviews height.
self.view.layoutIfNeeded()
})
Swift 4, Xcode 10
Animación de derecha a izquierda para búsqueda
// establecer inicialmente x = Your_View_Width
viewOfSearch.frame = CGRect(x: viewOfSearch.frame.size.width, y: 0 , width: viewOfSearch.frame.size.width, height: 50)
UIView.animate(withDuration: 0.50, delay: 0.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0, options: [], animations: {
//Set x position what ever you want
self.viewOfSearch.frame = CGRect(x: 0, y: 0 , width: self.viewOfSearch.frame.size.width, height: 50)
}, completion: nil)
También tuve este problema con la actualización más reciente para swift 3.
Para ser exactos, cuando quiera animar la vista, en realidad llama a layoutIfNeeded en la vista de supervisión de esa vista.
Intenta esto en su lugar:
UIView.animate(withDuration: 0.1,
delay: 0.1,
options: UIViewAnimationOptions.curveEaseIn,
animations: { () -> Void in
constraint.constant = ButtonAnimationValues.YPosition.DefaultOut()
self.superview?.layoutIfNeeded()
}, completion: { (finished) -> Void in
// ....
})
Parece que en el pasado han sido indulgentes con el hecho de poder simplemente transmitir la vista que desea animar. Pero está en la documentación que realmente debería estar llamando layoutIfNeeded en la supervisión.