2016-06-24 7 views
15

Ich habe eine TabelleView mit statischen Zellen. Die Zelle enthält ein ImageView, das sie vollständig ausfüllt. Und ich habe noch eine kleinere ImageViews oben. Ich positioniere diese ImageViews mit Einschränkungen. Ich habe eine Frage zur Größenanpassung der Einschränkungen. Wie kann ich verschiedene Constraint-Konstanten für verschiedene Gerätegrößen einstellen, ohne if/else-Schleifen zu programmieren. Gibt es eine Möglichkeit, es im Storyboard festzulegen? Ich habe eine führende Einschränkung Eltern Layout zum Beispiel mit einem konstanten Wert von 10. Dies ist für das iPhone 5 Bildschirm in Ordnung, aber auf einem iPhone 06.06 Plus-Bildschirm sollte höher sein als 10. iPhone5 AutolayoutiPhone6 AutolayoutSo richten Sie verschiedene Auto-Layout-Einschränkungen für verschiedene Bildschirmgrößen ein

+2

'ohne Programmierung if/else-Schleifen' - if/else a * Zweig * ist, nicht eine Schleife*. –

+0

wo hast du es gefunden? :-)) –

+1

Ein anderer Ansatz ist das Verhältnis https://github.com/onmyway133/blog/issues/35 – onmyway133

Antwort

5

Schließlich habe ich die Lösung gefunden, die in meinem Fall funktioniert.

  1. Ich legte die transparente Sicht und hinzugefügt Zentrieren X/Y (Hintergrundbild) auf Superview mit dem in die Art und Weise versetzt benötigt, die es meinen Rahmen (auf dem Hintergrundbild) für Plakate paßt - Constraints for the transparent view
  2. Dann Ich befestige gleiche Breite/Höhe an mein Superview (Hintergrundbild) für diese transparente Ansicht und verändere den Multiplikator in gleicher Breite (manuell wählte ich 0,61)
  3. Danach landete ich mein 1 Poster. Ich zentrierte auch sowohl vertikal als auch horizontal mit Offset und verwendete diesen Satz von Beschränkungen - Proportionale Breite zu Superview, Seitenverhältnis.
  4. Und das Letzte, das ich mein zweites Plakat mit dieser Beschränkung-Führender Raum zu Poster1, Ausrichtung CenterY zu Poster1 (mit dem Versatz in meinem Fall) und Gleiche Breite/Höhe entsorgte.Constraints for the Poster 1/2

Als Ergebnis habe ich wirklich adaptive Automatische Anordnung, die auf iPhones fast großen Werke 5-6-6 +

40

Sehr einfach. Sie können Konstantenwerte für Differenzgrößenklassen im Storyboard ändern. Ich gebe dir ein paar Schritte, nach denen du es begreifen kannst.

Zuerst erstellen wir Konstanten, wie Sie auf dieser Ansicht sehen enter image description here

Als nächstes wählen wir die Konstante wollen wir den Wert in anderen Größenklassen ändern. enter image description here

Jetzt kommt der knifflige Teil. Nachdem Sie die Konstante ausgewählt haben, können Sie im Attribut-Inspektor den Wert der Konstante sehen. Direkt daneben können Sie das PLUS (+) Zeichen links von der "Konstante" sehen. enter image description here

Klicken Sie darauf und wählen Sie Ihre gewünschte Größenklasse. Hier habe ich reguläre Höhe reguläre Breite gewählt, d. H. Für iPad Größen. enter image description here

Als nächstes geben wir ihm einen neuen Wert. So wird die Konstante, die normalerweise den Wert 61 hat, als 10 funktionieren, wenn sie in einer Größenklasse von iPad-Größenklassen gerendert wird. Hier enter image description here

ist der Ausgang - iPhone 4-enter image description here

iPad Air - enter image description here

Wie Sie sehen können, die gleichen Konstanten anderen Wert im laufenden Betrieb hat zu unterschiedlichen Größenklassen entsprechen.

Ich hoffe, meine Erklärung hat Ihnen geholfen.

+0

Saheb, vielen Dank !! So eine nette Antwort und es deckt einen Teil meiner Ausgabe vollständig ab - es funktioniert mit Geräten, die verschiedene SizeClasses haben (iPhone/iPad). Und was kann ich tun, wenn es um Skalierung geht, weil das Hintergrundbild, das meine Zelle füllt, auf iPhone6 ​​breiter ist als auf iPhone5! Dadurch werden zwei Top-Poster relativ zum Hintergrund verschoben, wie Sie oben sehen konnten. –

+1

für andere Geräte wie iPhone4 und 5, mit denselben Größenklassen können Sie die Einschränkungen manuell überprüfen und ändern oder Sie können Ihre Bilder in diesem Aspekt entwerfen. –

+0

Ich kenne diese Lösung und bin immer noch auf der Suche nach einem universellen Gerät, das mit jedem Gerät funktioniert ;-)) –

Verwandte Themen