NSLayoutConstraint Konstante nicht aktualisieren, nach dem setzen

Ich habe eine UIView Unterklasse mit einer entsprechenden xib - Datei. In meinem xib-ich habe eine NSLayoutConstraint Eigenschaft, die ich versuche zu animieren. Ich habe eine animateIn Methode. Das problem ist, dass nur die animateIn Methode funktioniert. Wenn ich versuche zu aktualisieren, die Konstante wieder ist es einfach bleibt auf dem vorherigen Wert.

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

Ich versuche zu aktualisieren, die konstant nach dem drücken einer Taste. Aber die Konstante scheint sich nicht zu aktualisieren, nachdem Sie die Einstellung. Es noch logs 0, auch nachdem Sie es auf -500. Ich rufe layoutIfNeeded aber es passiert nichts.

//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
    }

UPDATE

Es scheint, dass meine NSLayoutConstraint ist (null), wenn ich wollen es ein zweites mal. Das würde erklären, warum es nicht aktualisiert wird. Wie sollte ich einen Verweis darauf beibehalten?

Wenn es geworden ist null dann versuchen mit strong Zeiger.

InformationsquelleAutor Ramin Afshar | 2014-08-11

Schreibe einen Kommentar