2017-01-23 2 views
0

Ich habe eine UIView in dem es 4 Komponenten, UITextField, ein UIActivityIndicator und 2 UIButtons. Alle Komponenten verwenden Einschränkungen, die mithilfe von Storyboards festgelegt wurden.schneller Aktualisierungs Constraints programmatisch

Button1 UITextField UIActivityIndicator Button2

Die UITextField zeigt die URL einer UIWebView und die UIActivityIndicator entspricht das Laden der Seite. Wenn die Seite geladen wurde, ist UIActivityIndicator ausgeblendet.

Was ich will, ist, dass, wenn der Ladevorgang abgeschlossen ist und UIActivityIndicator versteckt ist, die Größe der UITextField erhöht und den Raum durch denUIActivityIndicator verwendet aufbrauchen.

Button1 UITextField Button2

Antwort

1

Hier ist, was ich tun würde:

Anstatt eine Einschränkung zwischen dem Textfeld setzen und der Aktivitätsanzeige, eine Einschränkung zwischen dem Textfeld verwenden, und es ist superview, mit extra Polsterung hinzugefügt um Platz für den Aktivitätsindikator zu schaffen.

Halten Sie die Strg-Taste gedrückt, und ziehen Sie aus der Abhängigkeit in den View-Controller, um eine Steckdose zu erstellen.

In Ihrem Code, wenn Sie den Aktivitätsindikator ausblenden, reduzieren Sie die konstante Einstellung der Einschränkung um die Breite des Aktivitätsindikators plus den Abstand zwischen dem Aktivitätsindikator und dem Textfeld, damit das Textfeld breiter wird Speicherplatz, der durch das Ausblenden des Aktivitätsindikators frei wird.

Wenn das Textfeld sein Wachstum animieren soll, rufen Sie in einem Aufruf von UIView.animate(duration:animations:) unmittelbar nach dem Code, der die Einschränkungseinstellung ändert, einen Anruf an layoutIfNeeded() an. Dadurch wird die Layoutänderung animiert.

+0

Arbeitete wie ein Charme !! –

+0

Es dauert eine Weile, um zu denken, in Bezug auf die Änderung Ihres Layouts durch die Verkabelung von Steckdosen zu Einschränkungen, aber das ist eine übliche Art, in Auto-Layout zu arbeiten. –

Verwandte Themen