2013-09-23 9 views
19

Ich habe einen neuen View Controller erstellt, dann eine Scroll-Ansicht als Kind der Stammansicht hinzugefügt und "Leading/Top/Trailing/Bottom Space zu Superview" auf 0 gesetzt, so dass die Die Bildlaufansicht würde den übergeordneten Eintrag vollständig ausfüllen.Falsche Nachlauf Leerzeichen Einschränkungen für Kinder von UIScrollView

Dann habe ich eine Schaltfläche als untergeordnetes Element der Bildlaufansicht hinzugefügt, mit Platzbeschränkungen von 15 bis "Superview" (d. H. Zur Bildlaufansicht). Ich würde also erwarten, dass die Schaltfläche einen Abstand von 15 zu den oberen/linken/rechten Rändern hat und der Inhalt der Bildlaufansicht am Ende der Schaltfläche + 15 endet. Jedoch ist die Breite der Schaltfläche nicht korrekt ist (getestet in Xcode 5 Interface Builder, iOS 7.6 Simulatoren):

Example

Es ist nicht einmal arbeiten, wenn ich auf den Button mit „gleicher Breite einschränken zu Super "! Nimmt immer noch nicht die volle Breite auf.

Wie löse ich das?

+0

Siehe Antwort hier: http://stackoverflow.com/questions/16843633/ios-autolayout-with-uiscrollview-why-does-content-view-of-scroll-view-not-fill – asdfasdfads

Antwort

48

Eine gute Lösung gefunden :) Der Grund für dieses Verhalten liegt darin, dass die Bildlaufansicht die Größe der Inhaltsansicht an die tatsächlichen Unteransichten anpasst und die Breite/Höhe nicht automatisch ausfüllt. Wenn die Breite gefüllt werden soll, muss die Bildlaufansicht daher mindestens eine Ansicht enthalten, die die Breite des Bildschirms ausfüllt.

Mit diesen Schritten fügte ich eine Ansicht mit gleicher Breite zur Bildlaufansicht hinzu (die Bildlaufansicht selbst, nicht den Inhaltsansichtsbereich), was dazu führte, dass meine Bildlaufansicht schließlich auf die volle Breite erweitert wurde, weil ich auch Einschränkungen hinzugefügt hatte "Platz zum Superview 0/0/0/0" in der Bildlaufansicht. auf mich

  • einen leeren View-Controller mit einem Stammansicht
  • Add scroll Ansicht, eingestellt Constraints "space oben/links/rechts/unten = 0/0/0/0 bis Super"
  • Add Angenommen Ihre Benutzeroberfläche Scroll-Ansicht, wie Sie wollen und auch Einschränkungen festlegen, wie Sie
  • wollen eine neue Ansicht
  • hinzufügen, benennen Sie es so etwas wie „Sorgt Scroll Ansicht füllt Breite“, mit den folgenden Einschränkungen
    • Vor-/Nachlauf/top Platz zum Superview (das ist die Bildlaufansicht!) = 0
    • Höhe 0, weil wir wollen, dass es unsichtbar ist, weil die Ansicht nur ein Helfer ist
    • Wichtiger Teil: Wählen Sie diese Ansicht und die Bildlaufansicht in der Hierarchie und beschränken Sie sie auf die gleiche Breite. Da die Bildlaufansicht auf ihre Superansicht beschränkt ist, erhält sie eine Breite. Dann stellt diese Einschränkung sicher, dass die Inhaltsansicht der Bildlaufansicht ebenfalls (mindestens) so breit ist.
+8

Gleiche Breite! So elegant! –

+0

Um klar zu sein, muss "Neue Ansicht hinzufügen" ein untergeordnetes Element der Bildlaufansicht sein – theblindprophet

Verwandte Themen