animations animating animate ios swift uiview uiviewanimation swift3

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.