0

Ich habe Probleme mit etwas, ich wäre dankbar, wenn Sie mir einen Rat geben könnten.Wie animiere ich Constraint-Änderungen, wenn Constraints programmatisch mit VFL erstellt werden?

Grundsätzlich habe ich einige Einschränkungen mit Visual Format Language erstellt und macht meine Basis dynamischer. Ich habe meine Ansichten im Storyboard nicht berührt.

Sie können den roten Bereich als navigationBar betrachten.

In der Beispielansicht sieht wie aus;

enter image description here

Mein Problem ist; Ich möchte meine TopView auf einigen ViewController verstecken.

Zuerst habe ich eine Eigenschaft erstellt;

@property (strong, nonatomic) NSLayoutConstraint *constraintTabbarHeight; 

Aber ich merkte, ich nicht meine NSLayoutConstraint Eigenschaft mit VFL einstellen könnte. Weil VFL ein Array von Beschränkungen erstellt.

Also das ist meine erste Frage; Gibt es trotzdem meine VFL Einschränkung mit NSLayoutConstraint Eigenschaft zu halten?

Wie dem auch sei, so habe ich beschlossen, meine Höhenbeschränkung mit constraintWithItem Methode zu erstellen.

self.constraintTabbarHeight = [NSLayoutConstraint constraintWithItem:self.tabbarContainerView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:95]; 

Zweitens suche ich auf stackoverflow und ich habe eine Methode gefunden. Ich kann diese Methode von jedem beliebigen ViewController aus aufrufen.

- (void)updateTabbarConstraintWith:(int) heightValue{ 
    self.constraintTabbarHeight.constant = heighValue; 
     [UIView animateWithDuration:0.3 
        animations:^{ 
         [self.view layoutIfNeeded]; 
        }]; 
} 

Wenn ich self.constraintTabbarHeight.constant = 0 gesetzt, alles ist in Ordnung. Mein TopView (redArea) verschwindet, aber PlaceholderView ist immer noch auf derselben Position.

Ich dachte [Self.view layoutIfNeeded] wird meine Platzhalteransicht aktualisieren und es füllt meinen Bildschirm.

Es sieht so aus;

enter image description here

Wie mache ich es richtig?

Vielen Dank für Ihre Antworten.

Antwort

0

Sie müssen eine Einschränkung von Ihrem placeholderView.Top zu Ihrem TopView.Bottom erstellen, andernfalls können Sie sich bewegen, ohne den anderen zu beeinträchtigen