2014-09-01 11 views
7

sono stato in grado di animare un cambiamento vincolo utilizzandoAnimare i vincoli usando Facebook pop?

[UIView animateWithDuration:0.5 
         delay:0.5 
    usingSpringWithDamping:0.7 
     initialSpringVelocity:0.7 
        options:0 
       animations:^{ 
        [self.closeButton layoutIfNeeded]; 
       } completion:NULL]; 

Ma ho avuto l'impressione che questo potrebbe anche essere fatto utilizzando la libreria POP Facebook. Qualcuno può indicarmi la giusta direzione per scoprire come?

Grazie

risposta

19

In questo caso si desidera animare un NSLayoutConstraint è possibile effettuare le seguenti operazioni con POP e animerà il vincolo.

constraint // this is an NSLayoutConstraint that is applied to some view 

POPSpringAnimation *layoutAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayoutConstraintConstant]; 
layoutAnimation.springSpeed = 20.0f; 
layoutAnimation.springBounciness = 15.0f; 
layoutAnimation.toValue = @(value to go too); 
[constraint pop_addAnimation:layoutAnimation forKey:@"detailsContainerWidthAnimate"]; 

La proprietà principale da utilizzare è kPOPLayoutConstraintConstant come mostrato sopra.

+0

cosa succede se si desidera animare realmente la rimozione e l'aggiunta di un vincolo? –

+0

Probabilmente non vorresti il ​​framework POP ma invece usi i metodi di animazione standard 'UIView' aggiungendo e rimuovendo i vincoli e chiamando il setLayoutIfNeeded nel blocco di animazione per il metodo animate' UIView' con il metodo – darren102

+0

, forse una soluzione è quella di animare il visualizzare in e al completamento aggiungere vincoli. Grazie per l'aiuto :) –

0

Ecco un altro esempio di utilizzo di animazione primavera ...

-(void)shakeViewConstraint:(NSLayoutConstraint*)constraint{ 

     POPSpringAnimation *springStart = [POPSpringAnimation animationWithPropertyNamed:kPOPLayoutConstraintConstant]; 

     springStart.springSpeed = 0.5; 
     springStart.springBounciness = 0.3; 
     springStart.fromValue = @(50); 
     springStart.toValue = @(25); 
     springStart.velocity = @600; 
     springStart.delegate = self; //Using Delegates as handlers 

     [constraint pop_addAnimation:springStart forKey:@"animationUniquekey"]; 

     //Using Blocks as handlers 
     [springStart setCompletionBlock:^(POPAnimation* animation, BOOL finished) { 

      if (finished) 
       [constraint pop_removeAnimationForKey:@"animationUniquekey"]; 
     }]; 
    } 

    #pragma mark - POP Animation Delegates 

    -(void)pop_animationDidStart:(POPAnimation *)anim{ 

     //NSLog(@"POP ANIM STARTED!!"); 

    } 

    -(void)pop_animationDidStop:(POPAnimation *)anim finished:(BOOL)finished{ 

     //NSLog(@"POP ANIM STOPPED!!"); 

     if (finished) { 

      //NSLog(@"POP ANIM FINISHED!!"); 
     } 
    } 
Problemi correlati