2016-06-10 9 views
2

Ich bin Teil eines Teams arbeitet an einer App, die Auto-Layout für das iPhone 6 verwendet, aber wir haben gerade herausgefunden, dass wir auch iPhone 4s und 5 unterstützen müssen. Weil das Layout wurde für den größeren Bildschirm von 6 entworfen, wir entschieden uns für ScrollViews.Xcode/Swift Scrollview Layout zu breit

ich dieses Video als Tutorial von Arten verwendet:

UIScrollView and Autolayout - Xcode 6

Zum größten Teil, es funktioniert. Ich kann auf und ab scrollen.

Das Problem:

Scrolling vertikal arbeitet. Aber jetzt muss ich auch horizontal scrollen, was nicht ideal ist/sollte nicht passieren.

Selbst wenn der Simulator auf das iPhone 6 zurückgesetzt wird, wird alles, was mit dem Scrollview verbunden ist, so weit erweitert, dass der Benutzer seitlich scrollen muss.

Irgendwelche Vorschläge?

, was ich versuchte:

Einige Teile der App funktioniert ohne Probleme so weit wie mein Auge sehen kann, aber ich habe noch eine Scroll die anzuwenden, so ist es schwer zu sagen, ob Es ist die Scrollview Schuld oder etwas anderes bei der Arbeit. Ich tat dies finden, aber:

Nichtarbeits (scrollviews verwendet - nach unten scrollen, aber Breite geblasen wird):
enter image description here

Arbeiten (keine scrollviews verwendet - nicht nach unten scrollen, aber UI entspricht der Bildschirmbreite):
enter image description here

Ich habe keine Ahnung, ob das tatsächlich einen Unterschied macht. Ich habe versucht, die Größe auf irgendeinen/auch zu setzen, aber das schraubt sich mit bestehenden Auto-Layout-Einschränkungen.

Ich habe es auch versucht, es programmatisch zu tun, aber es gibt einige bekannte Probleme bezüglich des Systems, das die falsche Bildschirmgröße zurückbringt (die alles noch schlimmer versaut).

+0

Eine gültige Frage. Ich hatte ein ähnliches Problem, wenn ich ScrollView + Autolayout für verschiedene Ausrichtungen erstellte. Ich habe sie ihnen behoben, weiß aber immer noch nicht, wie sie es durch Versuch und Irrtum getan haben. Ich wäre interessiert, wenn jemand die Antwort auch weiß. – devim1

+0

scroll Ansichten sind überraschend schwer mit zu arbeiten. Ich musste Google UIScrollView Tutorial durchsuchen, um herauszufinden, wie man sie gut implementieren – rigdonmr

+0

Um zu verdeutlichen, benötigen Sie nur vertikale Scrolling für iPhone 4/5? – srvv

Antwort

7

Bei der Arbeit mit ScrollView & AutoLayout sollten Sie den gesamten Inhalt in eine Inhaltsansicht (UIView) einfügen und in der Bildlaufansicht anheften. (Ich gehe davon aus das du getan hast)

Nun, wenn Sie horizontalen Scroll deaktivieren mögen (wie in Tableview), dann werden Sie ein equal width constraint zwischen scroll view & content view hinzufügen müssen.

+0

Wow! Vielen Dank! Das hat es geschafft! –

+0

Hier ist ein Beispiel für Swift 3 Code: 'scrollView.addConstraint (NSLayoutConstraint (Element: scrollView, Attribut: .width, relatedBy: .equal, toItem: contentView, Attribut: .width, Multiplikator: 1, Konstante: 0.0)) '. Die Logik besteht darin, dass Sie durch das Setzen dieser Einschränkung verhindern, dass der Inhalt der scrollView horizontal überläuft, und machen Sie damit eine scrollView, die nur vertikal scrollen kann. Umgekehrt können Sie beide "width" -Attribute für "height" in diesem Code-Snippet vertauschen, um ein horizontal scrollendes scrollView zu erstellen. –

+0

so lächerlich, dass Sie einen Container für Ihren Container benötigen, aber das hat mein Problem gelöst, danke! –

Verwandte Themen