Ciao Ho un'immagine che vorrei spostare su e giù (Su 10 pixel e giù 10 pixel) in modo che la mia immagine appaia sospesa. Come posso farlo con una semplice animazione grazie mille !!!Animate UIImage in UIImageView Up & Down (come se fosse in bilico) Loop
risposta
Si potrebbe utilizzare Core Animation per animare la posizione del livello vista. Se configuri l'animazione come additive
, non dovrai preoccuparti di calcolare la nuova posizione assoluta, ma solo la modifica (posizione relativa).
CABasicAnimation *hover = [CABasicAnimation animationWithKeyPath:@"position"];
hover.additive = YES; // fromValue and toValue will be relative instead of absolute values
hover.fromValue = [NSValue valueWithCGPoint:CGPointZero];
hover.toValue = [NSValue valueWithCGPoint:CGPointMake(0.0, -10.0)]; // y increases downwards on iOS
hover.autoreverses = YES; // Animate back to normal afterwards
hover.duration = 0.2; // The duration for one part of the animation (0.2 up and 0.2 down)
hover.repeatCount = INFINITY; // The number of times the animation should repeat
[myView.layer addAnimation:hover forKey:@"myHoverAnimation"];
Dal momento che questo sta usando Core Animation è necessario aggiungere QuartzCore.framework e #import <QuartzCore/QuartzCore.h>
nel codice.
Per tale compito, sarà meglio posizionare un'immagine in un sottolivello di UIView
e quindi animare quella cornice di sottostrato. Questo tutorial potrebbe darvi qualche idea: http://www.raywenderlich.com/2502/introduction-to-calayers-tutorial
Il tutorial si è collegato al non spiega come fare l'animazione. –
Le operazioni sui livelli sono animate automaticamente. –
Sì, hanno animazioni implicite se sono livelli standalone ma non si animano di nuovo ecc. –
Prova questa:
CGRect frm_up = imageView.frame;
frm_up.origin.y -= 10;
[UIView animateWithDuration:0.5
delay:0.0
options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeats
animations:^{
imageView.frame = frm_up;
}
completion:NULL
];
Funziona benissimo! L'unica cosa è che si muove verso l'alto e verso sinistra. Diagonale come se stesse andando al segno di 0,0. – Year3000
@ Year3000 come va? 1. Non sto facendo assolutamente nulla per la direzione X del fotogramma. 2. L'unica cosa che cambio è la posizione y, tuttavia dovrebbe essere autoreversa (vedi l'argomento 'options' della chiamata al metodo). Sono sicuro che ti manchi qualcosa. –
IDK È strano. Il mio frame è (86, 198, 132, 217) e sto usando quello che mi hai consigliato ed è come il centro dell'immagine. – Year3000
Per Swift 3 e 4 Swift:
let hover = CABasicAnimation(keyPath: "position")
hover.isAdditive = true
hover.fromValue = NSValue(cgPoint: CGPoint.zero)
hover.toValue = NSValue(cgPoint: CGPoint(x: 0.0, y: 100.0))
hover.autoreverses = true
hover.duration = 2
hover.repeatCount = Float.infinity
myView.layer.add(hover, forKey: "myHoverAnimation")
Aww uomo questo ha funzionato molto meglio! Non solo è stato più facile da capire, ma ho potuto provare diversi valori che avevano un senso! Molte grazie!!! – Year3000
Grazie, David. Mi hai salvato il tempo. Funziona bene. – Smita