Während es viele Fragen und Antworten zum Erstellen eines Storyboardlayouts gibt, das sowohl auf 4 "als auch 3,5" Bildschirmgrößen funktioniert, konnte ich keine geeignete Lösung für das folgende Szenario finden.Wie kann ich ein Storyboard für 4 "und 3,5" iphone Bildschirme mit automatischem Layout (ios6 + ios7) verwenden?
Ich benutze automatisches Layout mit ios6 (und ios7), und ich muss nicht Landscpae oder ipad unterstützen. Ich habe eine UIView mit mehreren Subviews, die wie das Mockup unten aussehen müssen. Es ist einfach, Beschränkungen für die automatische Belichtung im Storyboard so einzurichten, dass sie zu beiden Bildschirmgrößen passen. Meine Frage ist - Wie mache ich Auto-Layout wählen Sie die richtigen Einschränkungen abhängig von der Bildschirmgröße zur Laufzeit?
Beachten Sie, dass ich möchte nicht 2 verschiedene Storyboards verwenden. Es wäre eine Menge Arbeit, dies über meine gesamte Anwendung hinweg zu tun, und ich müsste alle Delegierten, Verkaufsstellen und Aktionen auf jedem Storyboard anschließen. Eine Änderung in einem Bildschirm würde erfordern, dass ich die doppelte Arbeit mache.
Ich habe 2 Methoden ausprobiert, um dies auf einem Storyboard zu machen, aber ich bin mit keinem von beiden zufrieden.
- Verdoppeln Sie die Einschränkungen. Die größere Einschränkung (50) hat eine höhere Priorität als die untere Einschränkung (30). Das Problem bei diesem Ansatz ist, dass auf der 3,5" Bildschirmgröße, automatisches Layout eine nur wenige niedrigere Priorität Einschränkungen aufheben kann - genug, um das Layout zu befriedigen -. Aber einige hohe Priorität Einschränkungen verlassen
- Unterklasse NSLayoutConstraint Bei dieser Methode werden alle Einschränkungen im Storyboard auf NSDualLayoutConstraint gesetzt.In dem Initialisierungscode von NSDualLayoutConstraint wird die Konstante der Einschränkung auf den Wert 3_5_constant geändert, wenn die Runtime-Bildschirmgröße 3,5 Zoll beträgt. Diese Methode ist deterministisch, aber Sie können das 3.5" Layout in der Interface Builder Vorschau nicht sehen.
Wenn nur Interface Builder Einschränkungen hatten einen sekundären konstanten Wert, die angewandt werden würden wenn die Bildschirmgröße 3,5 "ist, würde es mein Problem lösen. Also bleibe ich bei meiner Frage - wie kann ich ein einzelnes Storyboard richtig verwenden, um seine Subviews korrekt für 4" UND 3,5 "Bildschirmgrößen zu gestalten?
Ich würde Ihnen empfehlen, es in diesen Fällen programmgesteuert zu tun! – Zalykr
@Heliem, programmgesteuert wird er aufgefordert, Bedingungen auf seinen ViewControllern hinzuzufügen, um zwischen 3.5 "und 4.0" zu wählen. Es gibt wirklich keinen Unterschied neben all dem zusätzlichen Code. – Indigon
@Indigon nicht genau, ich denke, er hat nur Probleme in den Fällen, in denen er verschiedene Einschränkungen abhängig von der Bildschirmgröße will. Wenn ja, könnte er nur diese programmatisch tun – Zalykr