2014-09-01 16 views
7

udało mi się ożywić zmianę wiązania przy użyciuAnimate constraints using Facebook pop?

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

Ale byłem pod wrażeniem, że można to zrobić także za pomocą Facebook POP bibliotekę. Czy ktoś może wskazać mi właściwy kierunek, aby dowiedzieć się, w jaki sposób?

Dziękuję

Odpowiedz

19

W tym przypadku chcesz animowania NSLayoutConstraint Możesz wykonać następujące czynności z POP i będzie animować ograniczenie.

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"]; 

Właściwość główny użycie jest kPOPLayoutConstraintConstant, jak pokazano powyżej.

+0

co, jeśli chcemy rzeczywiście animować usuwanie i dodawanie ograniczenie? –

+0

Prawdopodobnie nie chciałbyś mieć frameworku POP, ale zamiast tego używałbyś standardowych metod animate "UIView", dodając i usuwając więzy, a następnie wywołując funkcję setLayoutIfNeeded w bloku animacji dla interesującego "UIView" animateWith metody – darren102

+0

, być może rozwiązaniem jest animacja zobacz i uzupełnij dodaj ograniczenia. Dzięki za pomoc :) –

0

Oto kolejny przykład z wykorzystaniem animacji wiosnę ...

-(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!!"); 
     } 
    }