2016-03-20 8 views
0

Ich habe eine Ansicht, die eine Kamera Schaltfläche oder Schaltfläche versteckt/offenbart, basierend auf Eingabe. Zunächst sieht es so aus:Werden UIView-Einschränkungen implizit reaktiviert?

enter image description here

Wenn der Benutzer die Eingabe beginnt, blendet es aus den Kamera von alpha auf 0 gesetzt wird, deaktiviert die Einschränkung zwischen der Kamera und textBox, ermöglicht eine Einschränkung zwischen der textBox und senden Taste, Verblassen in der folgenden:

enter image description here

Um dies zu erreichen, konstruiere ich alle Einschränkungen im Storyboard und aktiviere sie selektiv. Diese fast funktioniert, hat aber einige Probleme.

  1. Alle Einschränkungen sind im Storyboard vorhanden, das eine Build-Warnung generiert. Gibt es eine Möglichkeit, diese Warnung los zu werden? IE, um einige Einschränkungen anzugeben, aber zu deaktivieren?
  2. Auch wenn ich die Einschränkungen für die senden Schaltfläche in viewDidLoad, sobald ich nenne self.view.layoutIfNeeded() in diesem Verfahren zu deaktivieren, sie alle meine Einschränkungen werden wieder aktiviert, wodurch eine overconstrained Fehlermeldung auf der Konsole.
  3. Wenn ich schreibe, die Kamera und senden Taste verblassen sie richtig in die und aus und die Zwänge führen die textBox zu von wieder nach rechts und zurück nach links zu animieren. Wenn ich jedoch das Gerät rotiere, werden alle Einschränkungen spontan wieder aktiviert, obwohl ich willTransitionToTraitCollection überschreiben und überprüfen, ob sie korrekt sind, wenn diese Methode beendet wird. Wie verhindere ich das?

Jede Hilfe wird sehr geschätzt!

Antwort

0

Keine Antwort noch, aber ich brauchte einen Workaround und fand einen, der gut funktioniert.

Anstatt aktivieren/deaktivieren Einschränkungen, fand ich, dass ich auf einmal alle Elemente wie diese Autolayout kann:

enter image description here

Und animieren die Kamera Taste rechts-Constraint und alpha und senden Taste Links-Constraint und Alpha.Ich bestelle die Elemente, so dass das Textfeld zuletzt gezogen wird, und kann entweder mit der entsprechenden Einschränkung Einstellung überlagern, um es zu verbergen:

enter image description here

In viewDidLoad, ich erfassen den Interface Builder rechten contraint der Kamera, und die linke Einschränkung der Senden Taste. Um die Schaltfläche Senden verschwinden zu lassen, animiere ich ihr Alpha von 1 bis 0 und ihre Linkseinschränkung zu -sendButton.frame.width. So animieren Sie die Schaltfläche Senden erscheinen und die Kamera Taste verschwinden, mache ich das Gegenteil - animieren die Senden Alpha von 0 bis 1 und Wiederherstellen seiner ursprünglichen linken Einschränkung während Animieren der Kamera ist richtig -constraint zu -cameraButton.frame.width und seine jeweiligen Alpha von 1 bis 0.

Dies scheint gut zu funktionieren. Dennoch möchte ich gerne wissen, ob es eine Möglichkeit gibt, dies zu lösen, indem Sie Constraints aktivieren und deaktivieren.

+0

Diese große Spitze meine Frage vollständig beantwortet: [Quick-Tipp: Mehr Constraint-Animation Tipps (Route 85)] (https://www.youtube.com/watch?v=WVlNl4JDzL4&index=2&list=PLOU2XLYxmsIKGQekfmV0Qk52qLG5LU2jO) – Joseph

Verwandte Themen