NSLayoutConstraint constante mise à jour après la mise

J'ai un UIView la sous-classe correspondante xib fichier. Dans mon xib j'ai un NSLayoutConstraint bien qui je suis en train de les animer. J'ai un animateIn méthode. Le problème est que seul le animateIn méthode fonctionne. Lorsque j'essaie de mettre à jour la constante de nouveau simplement, il reste à la valeur précédente.

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *horizontalConstraint;

Je suis en train de mettre à jour la constante après l'appui sur un bouton. Mais la constante ne semble pas de mise à jour après le réglage. Il enregistre toujours la valeur 0, même après la mise à -500. Je vais appeler layoutIfNeeded mais rien ne se passe.

//this works
- (void) animateIn { 
    [UIView animateWithDuration:1.0 delay:2.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
        self.alpha = 1.0;
    } completion:^(BOOL finished) {

        [UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
            self.horizontalConstraint.constant = 0;
            [self layoutIfNeeded];
        } completion:^(BOOL finished) {
        }];
    }];
}

//this does not work
- (IBAction)resume:(id)sender {
        self.horizontalConstraint.constant = -500;
        [self layoutIfNeeded];

        NSLog(@"%f",self.horizontalConstraint.constant); //this always stays 0
    }

Mise à JOUR

Il semble que mon NSLayoutConstraint est (null) lorsque je veux l'utiliser une deuxième fois. Qui pourrait expliquer pourquoi elle n'est pas mise à jour. Comment devrais-je conserver une référence?

S'il est devenu null puis essayez avec strong pointeur.

OriginalL'auteur Ramin Afshar | 2014-08-11