it-swarm.com.de

Was ist "Rand einschränken" in Storyboard in Xcode 6?

Ich arbeite mit Autolayout und Einschränkungen und habe festgestellt, dass es in Xcode 6 eine Option Constrain to margins Gibt, die in Xcode 5 nicht vorhanden war und standardmäßig aktiviert ist.

Ich habe ein Testprojekt erstellt und dann auf einem ViewController ein UITableView hinzugefügt, wobei der Frame auf die gleiche Größe wie die Ansicht festgelegt und Einschränkungen hinzugefügt wurden

Xcode 6 Sie können hier sehen, obwohl die Tabellenansicht denselben Rahmen hat wie die Ansicht, die Xcode vorschlägt, -16 als Einschränkung hinzuzufügen, während Xcode 5 das Hinzufügen des Abstands 0 vorschlagen würde.

With Constrain to margin checked

Wenn Sie jetzt die Option "Auf Rand beschränken" deaktivieren, verhält es sich wie Xcode 5 und schlägt vor, 0 als Einschränkung hinzuzufügen

With Constrain to margin UnChecked

Außerdem habe ich festgestellt, dass ich die Storyboard-Datei in Xcode 5 nicht mehr öffnen kann, sobald ich die Einschränkung mit der Option "Rand prüfen" hinzugefügt habe. Daher ist dies definitiv etwas Neues in Xcode 6

Hoffentlich kann ich meine Frage richtig erklären. Ich würde gerne verstehen, was "Randeinschränkung" tatsächlich tut und wann ich es verwenden soll und wann nicht. Ich entschuldige mich, wenn es etwas sehr einfaches und offensichtliches ist.

[~ # ~] edit [~ # ~]

Ich habe etwas über Layoutränder in Diskussion hier gefunden. Ich frage mich, ob es damit zusammenhängt.

247
Bhumit Mehta

Ich verstehe überhaupt nicht, warum sich die Leute darüber beschweren, dass " Ränder vor iOS 8 einen Absturz verursachen würden. "

Festlegen Ihrer Einschränkungen in Bezug auf den Rand in einer xib-Datei oder einem Storyboard DOES NOT Bringen Sie Ihre App unter iOS7 zum Absturz, und DOES NOT macht einen Unterschied auf Ihrer Benutzeroberfläche unter iOS7 Gerät auch nicht, solange Sie die Eigenschaften UIView.layoutMargins und UIView.preservesSuperviewLayoutMargins in Ihrem Code nicht berühren.

Was ist Ränder in iOS8

Layoutränder stellen das Auffüllen des interior eines UIView dar, das das Layoutsystem beim Layouten von Unteransichten verwenden kann, um sicherzustellen, dass zwischen dem Rand einer Ansicht und a eine Lücke verbleibt Unteransicht. In dieser Hinsicht ähnelt es stark der Auffülleigenschaft, die mit Blöcken in CSS verknüpft ist.

enter image description here

Standardmäßig hat ein UIView Layoutränder von 8 Punkten auf jeder Seite, und dies kann in Interface Builder nicht geändert werden. Indem Sie jedoch die Eigenschaft UIView.layoutMargins Im Code festlegen, der nur unter iOS8 verfügbar ist, können Sie diese Werte anpassen.

Sie können IB veranlassen, die Ränder mit Editor> Canvas> Layout-Rechtecke anzeigen: anzuzeigen enter image description here

Ränder können verwendet werden, um das Layout Ihrer Ansichten und Unteransichten zu vereinfachen. Jedes UIView wird standardmäßig mit Rändern geliefert, sie wirken sich jedoch nur auf die Ansichtsplatzierung aus, wenn Sie eine Einschränkung einrichten, die sich auf einen Rand bezieht.

Wie benutzt man Ränder?

Die einzige Möglichkeit, Ränder in Interface Builder zu verwenden, besteht darin, die Option Relativ zum Rand zu aktivieren, während Sie Ihre Einschränkungen konfigurieren. So lenken Sie Ihre Einschränkung auf Verwenden Sie beim Layout meiner Ansicht Ränder anstelle von Kanten.

enter image description here

Schauen wir uns vier verschiedene Möglichkeiten zum Einrichten einer führenden Einschränkung zwischen einer Ansicht und ihrer Unteransicht an. Für jede Einschränkung wird die erste beschriebene Zuordnung ist die führende der Unteransicht und die zweite die führende der Übersicht. Was Sie genau beachten möchten, ist der Status des Kontrollkästchens Relativ zum Rand für jedes Einschränkungsende, da hierdurch festgelegt wird, ob die Einschränkung am Rand oder am Rand des Rands gebunden ist Aussicht.

  1. Erstes Element (Deaktivieren), zweites Element (Aktivieren): In diesem Fall wird festgelegt, dass der linke Rand der Unteransicht am linken Rand der Übersicht ausgerichtet werden soll (siehe Abbildung).

enter image description here

  1. Erstes Element (Deaktivieren), zweites Element (Deaktivieren): Beide verwenden Edge, kein Rand. In diesem Fall erklären wir, dass der linke Rand der Unteransicht am linken Rand der Übersicht ausgerichtet werden soll.

enter image description here

  1. Erstes Element (Häkchen), zweites Element (Häkchen entfernen): In diesem Fall wird festgelegt, dass der linke Rand der Unteransicht am linken Rand der Übersicht ausgerichtet werden soll. Bei dieser Art von Layout überlappt die Unteransicht die Übersicht.

enter image description here

  1. Erster Posten (Scheck), zweiter Posten (Scheck). Dies hat tatsächlich den gleichen Effekt wie Fall 2, da sowohl die Unteransicht als auch die Übersicht den gleichen Standardspielraum haben. Wir erklären, dass der linke Rand der Unteransicht am linken Rand der Übersicht ausgerichtet werden soll.

enter image description here

Was ist gut an Margins?

Diese neue Funktion (iOS8) wirkt sich nur auf die Entwicklung der Benutzeroberfläche aus, wenn Sie sich für die Verwendung von Rändern entscheiden.

Mithilfe von Rändern können Sie die Platzierung mehrerer Unteransichten anpassen, die eine gemeinsame Beziehung zu einer freigegebenen Übersicht haben, indem Sie den Wert einer einzelnen Eigenschaft ändern. Dies ist ein klarer Vorteil für das Festlegen aller verknüpften Einschränkungen mit festen Werten. Wenn Sie den gesamten Abstand aktualisieren müssen, können Sie alle relevanten Platzierungen gleichzeitig ändern, indem Sie den Rand der Übersicht mit einer einzelnen Zeile von aktualisieren, anstatt jeden Wert einzeln zu ändern Code wie dieser:

self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);

Um diesen Vorteil zu veranschaulichen, werden im folgenden Fall alle linken Ränder der Unteransichten am linken Rand der Übersicht ausgerichtet. Das Ändern des linken Randes der Übersicht wirkt sich daher auf alle Unteransichten gleichzeitig aus.

enter image description here

308
Scott Zhu

In iOS 8 haben Sie jetzt die Möglichkeit, Ihre Einschränkungen in Bezug auf einen vordefinierten Rand zu den Grenzen des Überblicks anstelle der Grenzen des Überblicks selbst zu definieren. Ja, es hängt völlig mit den Layouträndern zusammen, auf die Sie in den Dokumenten hingewiesen haben. Ein Vorteil ist, dass Sie Ihre Ränder für jeden Gerätetyp dynamisch oder unterschiedlich neu definieren können und das Layout entsprechend aktualisiert wird, ohne die Einschränkungen zu ändern.

Wann es zu benutzen ist: wann Sie diese neue Flexibilität nutzen möchten.

Wann es NICHT zu verwenden ist: Für alle Apps, die auf iOS 7 oder niedriger ausgeführt werden sollen.

63
KPM

Die Eigenschaft in UIView lautet: layoutMargins. Siehe Apple Docs . Grundsätzlich gilt: Wenn die Layoutränder 8,8,8,8 (Standardeinstellung) sind, hat eine Einschränkung, bei der der Abstand zwischen Abstand und Containerrand 0 ist, eine x-Position von 8. Beachten Sie, dass dies nur verfügbar ist unter iOS8 oder höher.

Für alle, die nicht möchten, dass ihre Einschränkungen an den Containerrand gehen:

STRG + Klicken + Ziehen, um das Popup zur Erstellung von Abhängigkeiten anzuzeigen.

Wenn das Menü standardmäßig anzeigt, dass die Randbedingung erstellt werden soll, halten Sie die Taste/alt gedrückt, damit die Randbedingung auf den Container und nicht auf den Containerrand angewendet werden kann.

Jetzt wird die Option angezeigt, die Einschränkung NICHT am Rand zu erstellen. Dies ist [~ # ~] Weg [~ # ~] schneller in meiner Verwendung.

42
Kyle Robson