Höhe der contentView von UIScrollView auf Grundlage von Insider-Inhalte mit Storyboard
Bin ich tatsächlich Schwierigkeiten, um meine UIScrollView
voll responsive mit nur storyboard Einschränkungen.
Hier mal meine Hierarchie :
> - UIViewController
> - UIView
> - UIScrollView
> - contentView
> - module1View
> - module2View
> - module3View
Alle Module werden verwendet, um die Anzeige von Diagrammen. Ich will, dass Sie reaktionsschnell Weg. Ich möchte Ihre Breite zu 100% dem Bildschirm und Ihre Höhe ist definiert durch eine Verhältnis Hinzugefügt, mit Einschränkung. Die Module werden nebeneinander angezeigt, wie Nachrichten in einem newsfeed.
Meine Frage ist : Wie setzt man die contentView
Höhe gleich der Summe aller Module (Modul 1 + 2 + 3) ?
In anderen Wort, das ich erreichen will :
- Oben contentView = top von Modul 1
- Top von Modul 2 = Ende von Modul 1
- Top von Modul 2 = Ende von Modul 2
- Unten contentView = Ende von Modul 3
Verwalteten zu tun, dass ich Folgen einige Tutorials gefunden im internet. Hier sind die Schritte, die ich gefolgt :
- Einstellung
UIScrollView
Constraints zu definieren, seine Ort und Stelle. - Einstellung
UIScrollView
top, unten, Links und richtigen Abstand zum nächsten Nachbarn zu 0. - Einstellung der Einschränkung zwischen den Modulen zu "stapeln", Sie auf eine
andere. - (Ich BIN BLOCKIERT HIER) Einstellung der unteren
contentView
zu den
Unterseite von Modul 3 zu erlauben, dieUIScrollview
scrollen bis zum Ende
content.
Habe ich versucht zu zwingen, die Höhe der UIScrollView
: es funktioniert, aber Es ist nicht responsive. Da die Höhe des Moduls errechnet sich durch einen Quotienten, je nach Gerät die Höhe "- Modul 1 + 2 + 3" während ändern.
Ich versucht, um eine Einschränkung von Modul 3 zu contentView
um die Unterseite des Moduls 3 = unten contentView
. All die Zwänge, rot mit Warnung überall.
Haben Sie eine Idee, wie man die Höhe der contentView
basiert auf einem responsive content ? (Wie "wrap-content in einer Art und Weise).
Vielen Dank im Voraus für Euch Hilfe!!!
- sobald Sie legen Sie die Höhe der Module basiert auf Ihr Verhältnis, Sie sollten in der Lage sein, um die Berechnung der Höhe für die contentView
- Ich habe versucht, hinzuzufügen :
mainContentView.frame = CGRectMake(0, 0, self.view.width, module1View.height+module2View.height+module3View.height);
in ViewDidLoad-und viewWillAppear, keiner von Ihnen arbeitete - wenn legen Sie die Rahmen der Module? Sie müssen die mainContentView Bild nach dem Modul-frames eingestellt werden... welche Art von Objekt sind die Module?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich in der Lage zu bekommen, dynamic scroll-views arbeiten ganz von storyboards, kein code, mit den folgenden Schritten:
1) In das storyboard, fügen Sie ein scroll-view und hemmen Ihre Kanten den Kanten der Haupt-Ansicht oder in welcher Weise auch immer angemessen ist
2) in der scroll-Ansicht, fügen Sie ein plain old UIView wie ein container. Beschränken Sie es an allen 4 Kanten des scroll-view, ABER AUCH hinzufügen, ein die gleiche Breite Einschränkung relativ zu scroll-view, und eine gleicher Höhe Einschränkung auf die scroll-view
3) Sehr wichtig: legen Sie eine niedrige Priorität für die Höhe Einschränkung, z.B. 250.
4) innerhalb der container-Ansicht, die Sie in Schritt 2 Hinzugefügt haben, fügen Sie Ihre 3 Module. Fixieren Sie die Obere Kante des ersten Moduls auf der Oberseite des Behälters anzuzeigen, Schränken Sie den unteren Rand des letzten Moduls auf den Boden des Behälters anzeigen, und beschränken alle, die in-zwischen den Modulen zu dem vorhergehenden Modul in der Kette. Dies sollte Ihnen Ihre Kette von ununterbrochenen vertikale Beschränkungen innerhalb der container-Ansicht. Sie müssen auch hinzufügen, was entsprechende x-Positionierung /- Breite-Einstellung Einschränkungen für jedes Modul.
5) Erstellen und ausführen! Die scroll-Inhalte betrachten, die Größe sollte sich automatisch gleich der Summe der Höhe aller Module plus dem Abstand zwischen Ihnen, und ändern Sie die Modul-Inhalte dynamisch zu aktualisieren, die scroll-view Größe des Inhalts per "auto-layout" ist nicht erforderlich, explizite code zu berechnen und zu aktualisieren.
Versuchen zu definieren, die Höhe der Module runtime und fügen Sie auto-layout Einschränkung für Module programmgesteuert.
Für mich, Daniels Lösung war sehr hilfreich, hat aber nicht funktioniert.
Hier sind die aktualisierten Schritte :
1) In das storyboard, fügen Sie ein scroll-view und hemmen Ihre Kanten den Kanten der Haupt-Ansicht oder in welcher Weise auch immer angemessen ist
2) in der scroll-Ansicht, fügen Sie ein plain old UIView wie ein container. Beschränken Sie es an allen 4 Kanten des scroll-view, ABER AUCH hinzufügen, ein equal-width-constraint relativ zu Blättern-Ansicht Eltern (höchste), und einer Höhe von constraint-scroll-Ansicht Eltern
3) Sehr wichtig: legen Sie eine niedrige Priorität für die Höhe Einschränkung, z.B. 250.
Ich habe mir arbeiten, indem nicht die Inhalte anzeigen, die Höhe der alles.