webentwicklung-frage-antwort-db.com.de

UIScrollView + Zentrierte Ansicht + Umfangreiche scrollbare Inhaltsgröße + viele iPhone-Größen

Ich habe:

  • anwendung, die im Quer- und Hochformatmodus funktionieren sollte.
  • ansicht mit voller Bildlaufansicht oben.
  • einige Ansicht innerhalb der Bildlaufansicht mit fester Breite und Höhe. (mit zusätzlichen H- und W-Einschränkungen)
  • in der Bildlaufansicht als horizontal zentriert im Container anzeigen. (entsprechend der Einschränkung hinzugefügt)

Ich habe eine Warnung im Interface-Builder "hat mehrdeutige scrollbare Inhaltsbreite" .enter image description here

Der einzige Weg, dieses Problem zu beheben, ist, wie ich weiß - die Einstellung von Nachlauf- und Führungsbeschränkungen. Aber für verschiedene iPhones (5,5 ", 4,7", 4 ") muss ich unterschiedliche Nachlauf- und Führungsbeschränkungen festlegen.

Wie kann ich diese Warnung beseitigen und trotzdem die horizontale Ansicht mit festem W und H für alle iPhone-Größen zentriert haben?

Ich erstelle ein Github-Repo, um dieses Problem zu veranschaulichen: ScrollViewAmbigous

Dies ist kein Duplikat von UIScrollView Scrollable Content Size Ambiguity , Aber es ist ähnlich (und wird nicht beantwortet, obwohl), aber diese Frage bezog sich insbesondere auf unterschiedliche Größen von iPhones.

20
skywinder

Am Morgen mit einer frischen Tasse Kaffee fand ich den Workaround für diese Ausgabe!

Hier ist also der Ausgangszustand für den einfachsten Fall:

  1. scrollView mit 0 Einschränkungen für alle Kanten
  2. Taste horizontal und vertikal mit fester Breite und Höhe zentriert
  3. Und natürlich Has ambiguous scrollable content width und Has ambiguous scrollable content heightlästige Warnungen.

1

Alles was wir tun müssen ist:

  • Fügen Sie zwei zusätzliche Einschränkungen hinzu, z. B. "0" für den Nachlauf- und/oder Bodenbereich für unsere Ansicht (in meinem Fall - UIButton).

Wichtig: Sie müssen nachlaufende und/oder untere - Einschränkungen hinzufügen. Nicht "führen und top" - es funktioniert nicht!

2

Sie können dies in meinem Beispielprojekt überprüfen, das zeigt, wie dieses Problem behoben werden kann: ScrollViewAmbigous

P.S.

Ich weiß nicht, warum es funktioniert und wie Xcode erkennt, welche Einschränkung mehr Priorität hat (weil ich für diese Einschränkungen keine Priorität habe), aber ich bin dankbar, wenn jemand erklärt, warum dies in Kommentaren unten funktioniert.

45
skywinder

Problem

  1. Die Warnung weist uns darauf hin, dass die Inhaltsgröße des Scrollview von seinen Unteransichten abhängt. 
  2. ihre Unteransicht hat zwar keine strikte Regel für Position und Größe (keine festen Einschränkungen), aber sie verwirrt die erzeugte Feder.

Lösung

  1. Erstellen Sie nur eine Unteransicht als "ContentView" für die Scrollansicht.
  2. Fügen Sie diesem 'contentView' strenge (feste) Einschränkungen hinzu.

    Bewährte Methode: Breite und Höhe der Bildlaufansicht gleich.

  3. Fügen Sie alle anderen Unteransichten und Einschränkungen Ihrer 'contentView' hinzu.
8
Timur X.

Es scheint viel Verwirrung in dieser Frage zu geben. Meiner Meinung nach muss ein UIScrollViewZWEInachlaufende Raumbeschränkungen haben, eine "innere", die es mit einer seiner Unteransichten verbindet (damit es seine Inhaltsbreite kennt) und eine andere "äußere", mit der es verbunden ist ein Geschwister oder ein Überblick, so dass es seine Rahmenbreite kennt.

Dasselbe Prinzip gilt für die Höhe, d. H. Zwei Einschränkungen für den unteren Raum.

0
Reuben Scratton