iOS 8 / XCode 6 autolayout-constraints angewendet wird, nach der Ansicht erscheint
Habe ich ein Projekt, das funktioniert nur gut mit XCode 5 und iOS 7, aber als ich vor kurzem heruntergeladen, XCode 6, ich bemerkte einige seltsame Verhalten mit autolayout.
Habe ich ein storyboard mit einer Aussicht, die einfach nur ein UIImageView und zwei UILabels. Diese Ansicht geladen wird mit einem UiPageViewController. Die UIImageView ist horizontal zentriert und vertikal in der Ansicht und es gibt Einschränkungen, die Angabe der Entfernung der beiden labels aus der Bild-Ansicht. Wenn es ein Fall ist, wenn das storyboard und autolayout-Werte-Konflikt (zum Beispiel in das storyboard, ein label ist 20 Pixel über das Bild anzeigen, aber die autolayout-sagt, es sollte 40 Pixel, oben), verwendet es zu sein, dass die autolayout-Wert wurde erfolgreich angewendet, bevor der view geladen. Somit wird, wenn die view wird zum ersten mal gezeigt, alles ist an der richtigen Stelle.
Nun mit iOS 8 /XCode 6, ich bin zu sehen, dass die view geladen und dann springen, um Ihre endgültige autolayout-position. Dieser Sprung ist spürbar, die der Endbenutzer sowohl im simulator und auf einem echten Gerät, und es ist wirklich nervig. Gibt es eine Möglichkeit zurück zu gehen, um das alte Verhalten? Soweit ich weiß, kein code wurde geändert, um dieses Problem verursachen.
- Siehe meine Antwort hier: stackoverflow.com/a/26290775/1342565
- Habe das gleiche Problem, sehr ärgerlich. Es galt nicht nur den view-Controllern, aber auch für die Sammlung und table view cells.
- dies ist Duplikat dieses Problem stackoverflow.com/questions/25791183/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wo ist dein code, der die änderungen an Ihrer Zwänge?
Wenn Sie halten es in viewWillAppear: Sie dieses problem haben. Ich fand, dass viewDidLayoutSubviews funktioniert gut für iOS8 aber nicht immer für iOS7 rückwärts.
Schließlich, wenn Sie Sie nicht verwenden viewDidLayoutSubviews, was ich vorschlagen würde ist das ausblenden der container-Ansicht in viewDidLoad und blenden Sie es in viewWillAppear, nur nach den Einschränkungen angewendet wurden. Es wird Ihnen eine kleine zusätzliche Verzögerung beim laden der Bildschirm aber die Randbedingungen ändern, wird für den Benutzer transparent.
Ich hatte ein ähnliches Problem und legen Sie die Artikel in eine container-Ansicht in der Vorbereitung für das verstecken und dann zeigt Sie Ihnen, wie bereits in der anderen Antwort.
Ich nicht Liebe, dass als Lösung und endete nicht, es tun zu müssen.
Einfach setzen Sie Sie in einem container anzeigen, die gebunden war, um den controller view gestoppt, das Problem zu verhindern.
Für mich war es ein Problem mit der tab-bar in meinem Projekt. Ich brauchte es nicht in dieser Ansicht und ich versteckte es auf schieben. Also, wenn die Sicht bekam auf dem Stapel der bar verborgen war, und die Randbedingungen entsprechend angepasst. Also ich habe nur die tab-Leiste wieder an.