sizeThatFits auf Ansicht mit Constraints (Auto-Layout-Ansicht Innenrahmen-Layout-Ansicht)
Ansicht A Layouts es Subviews ist durch die Berechnung und deren Rahmen in layoutSubviews einstellen.
View B verwendet Einschränkungen ist es Subviews Layout.
Ansicht A enthält eine Anzahl von View B-Instanzen.
Ansicht muss A die Größe seiner Subviews wissen, wann es ihnen Layouts, so ruft es sizeThatFits:
auf sie.
Die Höhe von B hängt von der Breite ab. In meinem Beispiel hat es eine multiline UILabel
drin.
Wie sollte es ist B implementieren sizeThatFits:
so gibt es die richtige Größe sowohl die size
Parameter sizeThatFits:
und die Einschränkungen in Rechnung weitergegeben zu nehmen?
Was ich habe versucht,/als bisher:
systemLayoutSizeFittingSize:
- funktioniert nicht, weil es nicht in Betracht zieht eine genaue Größe an sie übergeben. Es kann nicht verwendet werden, um eine genaue Breite für beispielsweise eine Ansicht anzugeben, die vertikal wächst, wenn sie horizontal schrumpft. Es gibt nur entweder die komprimierte Größe oder die maximiert Größe.
intrinsicContentSize
- dies wird verwendet, um passieren Informationen - Auto-Layout so weit ich von der Dokumentation zu verstehen. Was wir wollen, ist Informationen zu erhalten von Auto Layout.
So habe ich bisher gedacht. Bitte korrigieren Sie mich, wenn ich einen Fehler gemacht habe. Und bitte hilf mir, ich wäre sehr dankbar, wenn mir jemand zeigen könnte, wie das gemacht wird!
edit: Auch, vielleicht gibt es einige ganz andere Art und Weise, dies zu tun, ohne auch nur sizeThatFits:
zu verwenden? Die einzige Anforderung, die ich habe, ist, dass ich Frame-Layout in der "äußeren" Ansicht (Ansicht A) und Auto-Layout in der "inneren Ansicht" (Ansicht B) weiter verwenden kann.
edit2: Bild hinzugefügt den genauen Fall zu illustrieren i
EDIT3 lösen muss: vergessen zu erwähnen, ich brauche iOS 7.0
Warum legen Sie keine Beschränkungen fest, die Ihre Ansichten B mit Ihrer Ansicht A verbinden, und ändern Sie die vertikale Inhaltsanpassungs-Priorität Ihrer Ansicht A auf niedrig? – RomOne
Wenn Sie auf diese Weise auswählen, müssen Sie sicherstellen, dass alle B-Ansichten obere und untere Beschränkungen aufweisen, die alle Ansichten miteinander verbinden, sodass die Ansicht A die Größenänderung erkennen kann;) – RomOne
Aber das würde das automatische Layout in Ansicht A und i verwenden Ich würde gerne wissen, wie man die Ansichten mit Hilfe von Code (Rahmenlayout) in Ansicht A beliebig positionieren kann, während man Einschränkungen in Ansicht B verwendet. Sicher, das Layout im Bild wird leicht mit automatischem Layout erreicht, aber manchmal kann das Layout Ich werde in Constraints ausgedrückt, und ich würde gern erfahren, wie das für solche Situationen gemacht wird. –