2014-10-20 23 views
5

Ich möchte eine Frage stellen über das höchst verwirrende (zumindest für mich) Thema - Größenklassen in Xcode 6. Ich habe versucht, ein vollständiges Verständnis davon zu bekommen, wie das alles funktioniert, aber es ist immer noch nicht klar für mich.Xcode 6 Größenklassen

Vor Xcode 6 und den neuen iPhones war alles sehr einfach. To, Non-Retina und Retina, Displays, die es uns ermöglichten, immer mit der gleichen Auflösung 320x480 (oder 568 für größere Geräte) zu arbeiten. Standard- und @ 2x-Vermögenswerte machten Sinn. Jetzt aber haben wir die großen Ass-Bildschirme mit dem gleichen Verhältnis (fast das gleiche), aber Arbeitsbereich ist nicht mehr derselbe.

Größenklassen sollen alles möglich machen, um alles in ein Storyboard zu integrieren. Aber warte .. iPhone 6 nutzt @ 2x Assets, was meiner Meinung nach bedeutet, dass die Grafik auf diesem Gerät kleiner aussieht als auf dem iPhone 5/5S. Und das iPhone 6 Plus verwendet @ 3x Assets, die wieder nicht gleich aussehen werden. Es scheint so, als ob es nicht möglich ist, zum Beispiel einen bestimmten Knopf immer gleich groß zu machen, etwa in voller Breite des Bildschirms. Es sei denn, wir programmieren das natürlich, aber das würde Größenklassen nutzlos machen.

Versteh ich die Dinge richtig oder fehle ich etwas? Es wäre toll zu hören, wie Sie es sehen. Vielleicht kennst du ein paar gute Tutorials? Ich habe nichts gefunden, was meine Zweifel erklären könnte.

Vielen Dank im Voraus!

+0

Sie haben es. Das musste ich tun. Manuell die Knöpfe durch Code größer/kleiner machen, je nachdem welches iPhone es ist. Wie Sie festgestellt haben, sieht der Button, der im iPhone 5/6-Simulator perfekt aussah, in iPhone 6 Plus mickrig aus. Daher das Dilemma –

+0

Danke für den Kommentar, Sam. Scheint wie iPhone 6 wird eine Menge Probleme und es gibt keine intelligente Möglichkeit zum Erstellen von Layouts im Interface Builder, es sei denn, die genauen Größen und Abstände sind nicht sehr wichtig. Erinnert mich an Android :) –

Antwort

4

Sie können viel tun, was du redest hier eine Kombination verschiedenen Ansätze:

  1. Größenklassen für verschiedene Arten von Geräten der meisten großen Veränderungen in der UI-Konfiguration zu decken (zB , Unterschiede zwischen iPad und iPhone). Sie können dies beispielsweise verwenden, um zu ändern, ob eine Seitenleiste angezeigt wird oder nicht.

  2. Autolayout-Regeln, die für einzelne Größenklassen spezifisch sind. Sie können verschiedene Auto-Layout-Regeln für verschiedene Größenklassen hinzufügen, um das Layout zu optimieren (Sie können beispielsweise auf diese Weise zwischen einer horizontalen Reihe von Schaltflächen und einer gestapelten Spalte von Schaltflächen wechseln, da Sie jetzt verschiedene Autlayout-Regeln für verschiedene Größenklassen verwenden können). Diese Technik ist extrem leistungsfähig, sobald Sie feststellen, dass Sie nicht mehr die gleichen Regeln für die automatische Anordnung für alle Größenklassen verwenden müssen.

  3. Asset-Kataloge, um vorgerenderte Grafiken für die verschiedenen unterstützten Auflösungen usw. automatisch auszuschalten. Beachten Sie auch, dass viele ältere Geräte iOS 8 nicht unterstützen. Daher müssen Sie die wirklich niedrigen Versionen nicht mehr verwenden, es sei denn, Sie benötigen umfangreiche Abwärtskompatibilität (und wenn Sie dies tun, sind nicht alle Größenklassenfunktionen verfügbar sowieso). Ich habe gerade eine neue Version der App erstellt, die nur iOS 8 unterstützt, da Benutzer in älteren Versionen nur die vorherige Version der App erhalten.

  4. Größenanpassbare Bilder: Sie können jetzt größenveränderbare Bereiche innerhalb von Bildern angeben, um zu steuern, wie sie gestreckt werden, wenn sie auf Dinge wie UIButtons usw. angewendet werden, die ihre Größe gemäß den Regeln für automatische Layouts ändern können. (Dies ist eine Funktion, die Android seit geraumer Zeit hat, also ist es auf iOS willkommen.) Dies bedeutet, dass Sie auf einer größeren Auswahl von Bildschirmgrößen gut aussehen können, ohne so viele separate Bilder oder so viel genaue Kontrolle über die Größe zu haben der UI-Elemente.

  5. Programmatic Code in den View-Controllern, um alles zu optimieren, was Sie sonst nicht erreichen können.

Während es wahr ist, dass Sie nicht ganz haben als körnige Kontrolle bestraft, über die Geräte zeigen, was genaues Layout mit Größenklassen, fand ich, dass dies ein Problem nicht wirklich so groß war wie Sie vielleicht denken, wie Dank der Größenklassen können sich die View Controller sehr nahtlos an unterschiedliche Geräte anpassen. Die Kombination von Auto-Layout- und Größenklassen ist besonders leistungsstark. Und es ist potenziell eine gute Sache, denn es bedeutet weniger neue manuelle Konfiguration, wenn Apple mit einer anderen Bildschirmgröße kommt. Es ist ein bisschen ein Schmerz, jetzt zu konvertieren, aber wahrscheinlich lohnt es sich auf lange Sicht. Sie müssen nur darüber nachdenken, wie Sie die Dinge ein wenig anders gestalten. Es ist ein wenig mehr wie Android, wo sie schon seit langem mit vielen verschiedenen Bildschirmgrößen und Auflösungen von Geräten zu kämpfen haben, aber es ist auch die Art natürlicher Evolution der Plattform, wo Sie nicht wirklich genau für jedes einzelne physische Gerät entwerfen können als praktische Angelegenheit (Sie sollten sie trotzdem im Simulator testen).

+0

hey, sehr gute Punkte! Vielen Dank für die Auflistung all dies! –

0

Größenklassen gibt es nicht auf eine größere Bildschirmgröße anpassen nur, sie sind es für völlig verschiedene Layouts. Wie auf einem iPhone können Sie ein Element anzeigen und tippen Sie auf, um zum nächsten Bildschirm für weitere Informationen zu gelangen, aber auf einem iPad zeigen Sie beide auf dem gleichen Bildschirm.

Für kleine Anpassungen, verwenden Sie die automatische Layout, mit verschiedenen Layouts pro Größenklasse und die verschiedenen Bildschirmgrößen in jeder Größenklasse werden durch das automatische Layout behandelt.