UIView animierte Änderungen mit Auto-Layout-Einschränkungen
Angenommen, ich habe ein Projekt, das wie folgt aussieht:
Es gibt zweiUIView
s - man hat angerufenyellowBox
und der andere rief anredBox
. Die Einschränkungen für das automatische Layout legen fest, dassyellowBox
beträgt 60 Punkte vom oberen Rand der Übersicht mit 350 Punkten vor und nach dem Abstand (d. h. links und rechts von der Ansicht). DasredBox
hat die gleichen Einschränkungen hinsichtlich des führenden und nachfolgenden Speicherplatzes. Zwischen den beiden Kästchen von 0 gibt es eine vertikale Platzbeschränkung, um anzuzeigen, dass der untere Rand desyellowBox
sollte immer direkt oben auf dem seinredBox
.
Wenn der Benutzer auf die Schaltfläche "Gelbes Feld erweitern" tippt, möchte ich die Höhe deryellowBox
zu erhöhen und infolgedessen dieredBox
bewegt sich nach unten, um die vertikale Raumbeschränkung weiterhin zu erfüllen (dass dieyellowBox
ist immer oben auf derredBox
). Hier ist der Animationscode:
- (IBAction)expandYellowBox:(id)sender {
[UIView animateWithDuration:0.5
animations:^{
CGRect newFrame = self.yellowBox.frame;
newFrame.size.height += 50;
self.yellowBox.frame = newFrame;
}];
}
Ich war jedoch nicht in der Lage, dies richtig zum Laufen zu bringen. Wie Sie an dem roten Symbol erkennen können, liegt derzeit ein Problem mit den Einschränkungen vor:
Das ist fair genug, da das automatische Layout die Höhe der Kisten nicht kennt. Ich kann dieses Problem jedoch nicht so beheben, dass die Größe der Boxen geändert und verschoben werden kann. Zum Beispiel, wenn ich eine Höhenbeschränkung für dieyellowBox
Dann wird verhindert, dass die Größe geändert wird. Wenn ich die Höhenbeschränkung auf setzegrößer als oder gleich (um das zu erlaubenyellowBox
Höhe zu erhöhen), dann bekomme ich einen anderen Einschränkungsfehler:
Alle Einschränkungen wurden mithilfe von Xcode im Storyboard festgelegt - keine wurden in Code geschrieben.
Jede Hilfe sehr geschätzt.
BEARBEITEN: Wie sich herausstellt, dieyellowBox
wächst, wenn auf die Schaltfläche geklickt wird - es ist nur ich konnte nicht sagen, weil es hinter dem angezeigt wirdredBox
. Ich bemerkte es erst, nachdem ich ungefähr vier Mal darauf geklickt hatte und es fing an, am unteren Rand des Fensters zu erscheinenredBox
. Die gleiche Frage bleibt jedoch immer noch - wie kommt man an dieredBox
immer auf dem Boden der Sache bleibenyellowBox
.