UIStoryboard wie ersetzen Einschränkungen programmgesteuert?

Ich habe einen view-controller angelegt in einem storyboard mit autolayout aktiviert und bin auf der Suche nach einem Weg, um zu ändern, Einschränkungen zu erlauben, meine Ansicht zu drehen in landscape-und Neuanordnen von Schaltflächen auf dem Bildschirm. Wenn ich versuche den code unten, bekomme ich etwa zwei Dutzend "nicht zu befriedigen Einschränkungen, brechen Einschränkung..." Meldungen kann ich nicht wirklich entschlüsseln.

Gibt es eine Möglichkeit, dynamisch zu ersetzen Einschränkungen, von einem storyboard mit Einschränkungen, die ich programmgesteuert angeben? Ich möchte komplett überschreiben, das layout, die Tasten, die ich definiert in einem storyboard.

-(void)updateViewConstraints
{
    [super updateViewConstraints];

    self.loginButton.translatesAutoresizingMaskIntoConstraints = NO;
    self.getStartedButton.translatesAutoresizingMaskIntoConstraints = NO;
    self.takeTourButton.translatesAutoresizingMaskIntoConstraints = NO;



    [self.loginButton removeConstraints:self.loginButton.constraints];
    [self.getStartedButton removeConstraints:self.getStartedButton.constraints];
    [self.takeTourButton removeConstraints:self.takeTourButton.constraints];


    one = self.loginButton;
    two = self.getStartedButton;
    three = self.takeTourButton;


    NSDictionary *metrics = @{@"height":@50.0,@"width":@100.0,@"leftSpacing":@110.0};
    NSDictionary *views = NSDictionaryOfVariableBindings(one,two,three);

    [self.view removeConstraints:activeTestLabelConstraints];
    [activeTestLabelConstraints removeAllObjects];

    if(isRotatingToLandscape)
    {

        [self registerConstraintsWithVisualFormat:@"|-[one(two)]-[two(three)]-[three]-|" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:metrics views:views];
        [self registerConstraintsWithVisualFormat:@"V:[one(height)]-|" options:0 metrics:metrics views:views];

    }else
    {

        [self registerConstraintsWithVisualFormat:@"|-leftSpacing-[one(width)]" options:0 metrics:metrics views:views];
        [self registerConstraintsWithVisualFormat:@"[two(width)]" options:0 metrics:metrics views:views];
        [self registerConstraintsWithVisualFormat:@"[three(width)]" options:0 metrics:metrics views:views];
        [self registerConstraintsWithVisualFormat:@"V:[one(height)]-[two(75)]-[three(100)]-|" options:NSLayoutFormatAlignAllCenterX metrics:metrics views:views];
    }


}

Aktualisiert mit Rob ' s Antwort, hier ist die Methode zu entfernen Einschränkungen, die ich verwenden

-(void)removeConstraintForView:(UIView*)viewToModify
{

    UIView* temp = viewToModify;
    [temp removeFromSuperview];
    [self.view addSubview:temp];

}
InformationsquelleAutor Alex Stone | 2013-07-25
Schreibe einen Kommentar