sacar quito quitar pone pantalla desactivar cómo como cerrar aplicaciones iphone objective-c

iphone - quito - Animar una vista zoom-botando?



mi iphone se pone zoom (10)

¿Hay alguna manera de animar una vista para que se acerque y se aleje un poco y las bandas vuelvan al tamaño final? No estoy seguro de cómo hacer este tipo de animación.


Acabo de refactorizar el código de Amit Singh usando bloques, lo que lo hace mucho más simple y legible.

popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001); [self.view addSubview:popUp]; [UIView animateWithDuration:0.3/1.5 animations:^{ popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1); } completion:^(BOOL finished) { [UIView animateWithDuration:0.3/2 animations:^{ popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9); } completion:^(BOOL finished) { [UIView animateWithDuration:0.3/2 animations:^{ popUp.transform = CGAffineTransformIdentity; }]; }]; }];


Consulte la sección relacionada con la animación en UIView Class Reference en su Xcode. Sugerencia: use la propiedad de transformación.


Demasiadas respuestas complicadas 😊. Es mucho más fácil hacerlo a partir de 2017 (Swift 3/4).

Swift 4 -

yourview.transform = yourview.transform.scaledBy(x: 0.001, y: 0.001) UIView.animate(withDuration: 0.5, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.3, options: .curveEaseInOut, animations: { yourview.transform = CGAffineTransform.identity.scaledBy(x: 1.0, y: 1.0) }, completion: nil)

Tenga en cuenta el parámetro usingSpringWithDamping . Este parámetro determina la cantidad de rebote / efecto de resorte que desea y permite valores de 0 a 1. Cuanto menor sea el valor, mayor será el efecto de rebote. Además, si no le gusta el efecto scaleBy , puede simplemente usar buenos viejos cuadros para mostrar un UIView expande y rebota.



Esto se puede hacer de una manera mucho más simple en estos días:

view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001); [UIView animateWithDuration:0.5 delay:0.2 usingSpringWithDamping:0.6f initialSpringVelocity:1.f options:UIViewAnimationOptionCurveEaseInOut animations:^{ view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0); } completion:^(BOOL finished) { view.transform = CGAffineTransformIdentity; }];


La respuesta de Amit es agradable y una aceptada. Estoy publicando la versión Swift de esa respuesta aquí para alguien que quiera desarrollar en Swift / futuro. He usado Xcode 7.3.1 y Swift 2.2 para desarrollar esto.

popView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001) self.view.addSubview(popView) UIView.animateWithDuration(0.3/1.0, animations: { popView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1) }, completion: {finished in UIView.animateWithDuration(0.3/1.2, animations: { popView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9); }, completion: {finished in UIView.animateWithDuration(0.3/1.5, animations: { popView.transform = CGAffineTransformIdentity }) }) })

Gracias y por favor hagan un comentario para la actualización.

ACTUALIZAR Aquí está el mismo código para Swift 3. Funciona bien con Xcode 8 e iOS 10.

let identityAnimation = CGAffineTransform.identity let scaleOfIdentity = identityAnimation.scaledBy(x: 0.001, y: 0.001) popView.transform = scaleOfIdentity self.view.addSubview(popView) UIView.animate(withDuration: 0.3/1.5, animations: { let scaleOfIdentity = identityAnimation.scaledBy(x: 1.1, y: 1.1) popView.transform = scaleOfIdentity }, completion: {finished in UIView.animate(withDuration: 0.3/2, animations: { let scaleOfIdentity = identityAnimation.scaledBy(x: 0.9, y: 0.9) popView.transform = scaleOfIdentity }, completion: {finished in UIView.animate(withDuration: 0.3/2, animations: { popView.transform = identityAnimation }) }) })

Espero que esto haya ayudado.


Solo para volver a usar el código en el futuro y mantener limpio el código.

@interface UIView (Animation) - (void)addSubviewWithBounce:(UIView*)theView; @implementation UIView (Animation) -(void)addSubviewWithBounce:(UIView*)theView { theView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001); [self addSubview:theView]; [UIView animateWithDuration:0.3/1.5 animations:^{ theView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1); } completion:^(BOOL finished) { [UIView animateWithDuration:0.3/2 animations:^{ theView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9); } completion:^(BOOL finished) { [UIView animateWithDuration:0.3/2 animations:^{ theView.transform = CGAffineTransformIdentity; }]; }]; }]; } @end


Usado con iOS9 y xCode 7

//for zoom in [UIView animateWithDuration:0.5f animations:^{ self.sendButton.transform = CGAffineTransformMakeScale(1.5, 1.5); } completion:^(BOOL finished){}]; // for zoom out [UIView animateWithDuration:0.5f animations:^{ self.sendButton.transform = CGAffineTransformMakeScale(1, 1); }completion:^(BOOL finished){}];


Use el siguiente código para la animación de rebote de zoom.

#define DURATION 1.0 CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; CATransform3D scale1 = CATransform3DMakeScale(0.5, 0.5, 1); CATransform3D scale2 = CATransform3DMakeScale(1.2, 1.2, 1); CATransform3D scale3 = CATransform3DMakeScale(0.9, 0.9, 1); CATransform3D scale4 = CATransform3DMakeScale(1.0, 1.0, 1); NSArray *frameValues = [NSArray arrayWithObjects: [NSValue valueWithCATransform3D:scale1], [NSValue valueWithCATransform3D:scale2], [NSValue valueWithCATransform3D:scale3], [NSValue valueWithCATransform3D:scale4], nil]; [animation setValues:frameValues]; NSArray *frameTimes = [NSArray arrayWithObjects: [NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:0.5], [NSNumber numberWithFloat:0.9], [NSNumber numberWithFloat:1.0], nil]; [animation setKeyTimes:frameTimes]; animation.fillMode = kCAFillModeForwards; animation.removedOnCompletion = NO; animation.duration = DURATION; [animationView.layer addAnimation:animation forKey:@"popup"];


escriba este código cuando quiera activar esta animación

popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.001, 0.001); [self.view addSubview:popUp]; [UIView animateWithDuration:0.3/1.5 animations:^{ popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1); } completion:^(BOOL finished) { [UIView animateWithDuration:0.3/2 animations:^{ popUp.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.9, 0.9); } completion:^(BOOL finished) { [UIView animateWithDuration:0.3/2 animations:^{ popUp.transform = CGAffineTransformIdentity; }]; }]; }];

Este es un código actualizado (de fabio.cionini), ya que es una respuesta aceptada, por lo que se actualiza a la última.