2010-03-17 17 views
5

Mi piacerebbe "allungare" un UIView sul lato destro, il che significa che aumenta frame.size.width di pixel foo e allo stesso tempo diminuisce è frame.origin.x di foo pixels, usando la sintassi [UIView beginAnimations]. Tuttavia, se lo faccio, quando l'animazione inizia la vista si ridimensiona immediatamente, quindi avvia l'animazione per l'origine.Animazione di ridimensionamento e spostamento di UIView allo stesso tempo

CGRect currFrame = someView.frame; 
currFrame.size.width += 100; 
currFrame.origin.x -= 100; 

[UIView beginAnimations:@"Anim1" context:nil]; 
someView.frame = currFrame; 
[UIView setAnimationDuration:0.7]; 
[UIView commitAnimations]; 

Ho anche provato a suddividere l'animazione in 2 parti ma poi non riesco a mantenere la giusta posizione sul posto.

Qualsiasi aiuto è molto apprezzato!

+0

Hai trovato ancora alcuna soluzione? Sono colpito dallo stesso problema, è strano, perché la vista si ridimensiona immediatamente e quindi avvia l'animazione? –

risposta

4

Potrebbe essere necessario scendere fino a Core Animation e rompere questo in due animazioni esplicite:

CABasicAnimation *stetchAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.x"]; 
stetchAnimation.toValue = [NSNumber numberWithDouble:(someView.frame.size.width+100)/someView.frame.size.width]; 

CABasicAnimation *slideAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; 
slideAnimation.toValue = [NSNumber numberWithDouble:-100]; 

CAAnimationGroup *animationGroup = [CAAnimationGroup animation]; 
animationGroup.animations = [NSArray arrayWithObjects:stetchAnimation,slideAnimation,nil]; 
animationGroup.removedOnCompletion = NO; 
animationGroup.fillMode = kCAFillModeForwards; 
animationGroup.duration = 0.7; 

[someView.layer addAnimation:animationGroup forKey:@"animations"]; 
+0

Grazie, ma che allunga la vista. Quello di cui ho bisogno è di cambiare la cornice, in modo che possa ritrasmettere di conseguenza le sue sottoview. Fondamentalmente, è qualcosa come il comportamento del campo di ricerca in Mobile Safari (quando lo si tocca, si espande a sinistra). –

Problemi correlati