Ändern Sie die Größe der XIB-Stammansicht dynamisch auf die Größe ihres Inhalts mit Autolayout

8

Ich erstelle eine XIB in Xcode und füge eine einfache Ansicht als Unteransicht hinzu:

Was ich erreichen möchte, ist, dass die Unteransicht eine feste Größe hat und der rootview automatisch auf die Größe dieser Unteransicht skaliert, wobei ein Rand von 20.0 um ihn herum bleibt:

Also füge ich der Unteransicht eine feste Breite und eine feste Höhe hinzu. Dann füge ich die vier Einschränkungen für den 20.0 Rand hinzu:

Da die Superview keine Einschränkungen hat, sollte es weder Mehrdeutigkeiten noch widersprüchliche Constraints geben: Ich würde erwarten, dass die Superview schrumpft, um den Constraints zu entsprechen. Xcode beschwert sich jedoch:

Diese Einschränkungen würden nur dann einen Konflikt verursachen, wenn die rootview eine feste Größe hätte und dies der Fall zu sein scheint. Meine Frage ist also: Wie kann ich das rootview eines XIB flexibel gestalten, so dass es seine Größe dynamisch an seinen Inhalt anpasst?

(Ist das sogar mit Interface Builder möglich?)

    
Mischa 29.09.2015, 09:43
quelle

3 Antworten

4
  

Wie kann ich das rootview eines XIB flexibel so machen, dass es dynamisch ist   passt seine Größe an den Inhalt an?

Nicht möglich Interface Builder.

  

Da die Superview keine Einschränkungen hat, sollte es auch keine geben   Mehrdeutigkeit noch widersprüchliche Einschränkungen

Es ist nicht nur eine super Aussicht. Es ist auch ein Objekt in der Feder. Wir definieren simulierte Größe für solche Ansichten. Dies könnte verwendet werden, um die Fehler zum Schweigen zu bringen. Aber wieder werden diese nur simuliert.

Ist dieses rootView eine View-Controller-Ansicht? Wenn ja, verstehe ich nicht, warum versuchst du, seine WDD auf 280 und Höhe auf 168 zu fixieren.

Wenn es sich bei dieser Ansicht um eine benutzerdefinierte Ansicht handelt, die Sie einer anderen übergeordneten Ansicht hinzufügen möchten. Dann sollten Sie Ihre simulierte Größe auf 280 und die Höhe 168 ändern, und wenn Sie diese als Unteransicht hinzufügen, müssen Sie zwei weitere Einschränkungen hinzufügen, um diese Rootansicht in der 'übergeordneten' Ansicht zu positionieren.

    
BangOperator 29.09.2015, 11:33
quelle
0

Ich glaube, Sie haben vergessen, die automatische Größenanpassung für den gesamten Container festzulegen

%Vor%     
Hamed Akhlaghi 02.11.2016 12:20
quelle
0

Sie können das tun, indem Sie das xib manuell bearbeiten, um beispielsweise eine Höhenbeschränkung zu setzen (in meinem Fall war es eine Ungleichheit, die minimale Höhe einzustellen):

  1. fügt einer Unteransicht für die Höhe
  2. eine Einschränkung hinzu
  3. öffne das xib als Textdatei
  4. finde die Einschränkung, die du hinzugefügt hast (zB durch Cmd-F'ing zum Wert der Höhe)
  5. Schneide es aus und füge es in den Constraint-Abschnitt der Root-Ansicht ein
  6. Öffnen Sie das xib in Interface Builder erneut
  7. Die Einschränkung erscheint und Sie können sie wie gewohnt bearbeiten.
Jonathan. 14.12.2017 09:49
quelle