create iphone objective-c ios xcode uiimage

iphone - create - uiimage frame swift 4



Cómo hacer animación de "sacudida" (3)

En mi proyecto xcode tengo un UIImage. Quiero hacerlo un poco tembloroso (animación) de izquierda a derecha. Escribí este código, sin embargo, no funciona.

-(void)errorShake { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:1.0]; [lockImage setTransform:CGAffineTransformMakeRotation(-5 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(-10 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(-15 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(-20 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(-15 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(-10 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(-5 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(0 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(5 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(10 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(15 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(20 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(15 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(10 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(5 * M_PI / 180.0)]; [lockImage setTransform:CGAffineTransformMakeRotation(0 * M_PI / 180.0)]; [UIView commitAnimations]; }

¿Podría decirme, por favor, cómo puedo hacer temblar mi imagen?


Aquí está el código que uso para ese efecto.

-(void)shakeView { CABasicAnimation *shake = [CABasicAnimation animationWithKeyPath:@"position"]; [shake setDuration:0.1]; [shake setRepeatCount:2]; [shake setAutoreverses:YES]; [shake setFromValue:[NSValue valueWithCGPoint: CGPointMake(lockImage.center.x - 5,lockImage.center.y)]]; [shake setToValue:[NSValue valueWithCGPoint: CGPointMake(lockImage.center.x + 5, lockImage.center.y)]]; [lockImage.layer addAnimation:shake forKey:@"position"]; }

Como Jere mencionó. Asegúrese de incluir la importación:

#import <QuartzCore/QuartzCore.h>

También puede agregarlo como categoría en UIView .


La respuesta de brynbodayles también funciona en iOS8 para una animación de batido rápido.

Con la importación de QuartzCore:

func shakeView(){ var shake:CABasicAnimation = CABasicAnimation(keyPath: "position") shake.duration = 0.1 shake.repeatCount = 2 shake.autoreverses = true var from_point:CGPoint = CGPointMake(LoginField.center.x - 5, LoginField.center.y) var from_value:NSValue = NSValue(CGPoint: from_point) var to_point:CGPoint = CGPointMake(LoginField.center.x + 5, LoginField.center.y) var to_value:NSValue = NSValue(CGPoint: to_point) shake.fromValue = from_value shake.toValue = to_value LoginField.layer.addAnimation(shake, forKey: "position") }


De la respuesta de Corona

Dar animación de movimiento en múltiples botones y también en vistas SWIFT3

para ver la animación simplemente cambie la extensión UIButton a la extensión UIView

extension UIButton { func shakeAnim () { let shake:CABasicAnimation = CABasicAnimation(keyPath: "position") shake.duration = 0.1 shake.repeatCount = 2 shake.autoreverses = true let from_point:CGPoint = CGPoint(x:self.center.x - 5,y: self.center.y) let from_value:NSValue = NSValue(cgPoint: from_point) let to_point:CGPoint = CGPoint(x:self.center.x + 5,y: self.center.y) let to_value:NSValue = NSValue(cgPoint: to_point) shake.fromValue = from_value shake.toValue = to_value self.layer.add(shake, forKey: "position") } }