2016-04-20 3 views
0

Ich möchte meine Breiteneinschränkung der Ansicht ändern. Ich habe die Breite mit IBOutlet in meinem View Controller verbunden. Es funktioniert jedoch nicht.Ändern NSLayoutConstraint funktioniert nicht und Ansicht gehen Sie zurück

Versuchen Sie, es zu animieren, was tatsächlich vor sich geht, tatsächlich bleibt die Ansicht in ihre ursprüngliche Position zurück. Hier

ist der Code:

_providerExpSearchInputWidth.constant = 1000.0f; 
[_providerExpSearchInput layoutIfNeeded]; 

Jeder beraten kann?

+0

'updateConstraintsIfNeeded' anstelle von' layoutIfNeeded'? – 9dan

Antwort

0

Sie sollten Ihre Ansicht sagen Auto-Layout, um seine Unteransichten sofort zuerst, so dass Ihre Layout-Einschränkungen vollständig bekannt sind. Dann sollten Sie eine neue Einschränkung setzen und in Ihrem Animationsblock werden Sie das automatische Layout erneut veranlassen, seine Untersichten sofort zu gestalten. Da Sie diesen Aufruf im Animationsblock ausführen, werden alle Änderungen animiert. so etwas wie diese

Sie können versuchen:

[self.view layoutIfNeeded]; 
_providerExpSearchInputWidth.constant = 1000.0f; 

[UIView animateWithDuration:4.0 animations:^{ 
    [self.view layoutIfNeeded]; 
}]; 

Dies ist aus der Apple-Dokumentation auf layoutIfNeeded:

Mit dieser Methode können Sie das Layout von Subviews zu zwingen, vor dem Zeichnen. Wenn Sie die Ansicht verwenden, die die Nachricht als Stammansicht empfängt, legt diese Methode die Teilstruktur der Ansicht fest, die am Stamm beginnt.

Verwandte Themen