Friday, 13 October 2017

Edgesforextendedlayout


In iOS7 starten die View-Controller standardmäßig das Vollbild-Layout. Zur gleichen Zeit haben Sie mehr Kontrolle darüber, wie es seine Ansichten ausstellt, und das ist mit diesen Eigenschaften getan: Grundsätzlich, mit dieser Eigenschaft legen Sie fest, welche Seiten Ihrer Ansicht erweitert werden können, um den ganzen Bildschirm zu decken. Stellen Sie sich vor, dass Sie einen UIViewController in einen UINavigationController schieben. Wenn die Ansicht dieses View-Controllers ausgelegt ist, wird es beginnen, wo die Navigationsleiste endet, aber diese Eigenschaft wird festlegen, welche Seiten der Ansicht (oben, links, unten, rechts) erweitert werden können, um den gesamten Bildschirm zu füllen. Lassen Sie es mit einem Beispiel sehen: Hier legen Sie den Wert von edgesForExtendedLayout nicht fest. Daher wird der Standardwert übernommen (UIRectEdgeAll), so dass die Ansicht ihr Layout erweitert, um den gesamten Bildschirm zu füllen. Dies ist das Ergebnis: Wie Sie sehen können, erstreckt sich der rote Hintergrund hinter der Navigationsleiste und der Statusleiste. Jetzt wirst du diesen Wert auf UIRectEdgeNone setzen. So dass Sie dem View-Controller sagen, dass Sie die Ansicht nicht auf den Bildschirm abdecken möchten: Diese Eigenschaft wird verwendet, wenn Ihre Ansicht ein UIScrollView oder ähnliches ist, wie ein UITableView. Sie wollen, dass Ihre Tabelle beginnt, wo die Navigationsleiste endet, weil Sie den ganzen Inhalt nicht sehen werden, wenn nicht, aber gleichzeitig möchten Sie, dass Ihr Tisch den gesamten Bildschirm beim Scrollen abdeckt. In diesem Fall wird das Setzen von EdgesForExtendedLayout auf None nicht funktionieren, da Ihre Tabelle beginnt zu scrollen, wo die Navigationsleiste endet und es wird nicht dahinter gehen. Hier ist, wo diese Eigenschaft praktisch ist, wenn man den View-Controller automatisch die Insets anpasst (Einstellung dieser Eigenschaft auf JA, auch den Default-Wert) wird es Insert an die Spitze der Tabelle hinzufügen, so dass die Tabelle beginnt, wo die Navigation Bar endet, aber die Rolle wird den ganzen Bildschirm abdecken. Dies ist, wenn auf NO gesetzt ist: Und JA (standardmäßig): In beiden Fällen blättert die Tabelle hinter der Navigationsleiste, aber im zweiten Fall (JA) beginnt sie von unterhalb der Navigationsleiste. Dieser Wert ist nur eine Ergänzung zu den vorherigen. Wenn die Statusleiste opak ist, werden die Ansichten nicht auf die Statusleiste erweitert, es sei denn, dieser Parameter ist JA. Also, wenn du deine Ansicht verlängst, um die Navigationsleiste zu decken (edgesForExtendedLayout zu UIRectEdgeAll) und der Parameter ist NEIN (Standard), wird es nicht die Statusleiste abdecken, wenn es opak ist. Wenn etwas nicht klar ist, schreiben Sie einen Kommentar und Ill Antwort darauf. Wie IOS weiß, was UIScrollView für die Verwendung von iOS die erste Subview in deiner Viewcontroller-Ansicht, also die bei Index 0, und wenn es eine Unterklasse von UIScrollView dann die erklärten Eigenschaften anwendet. Natürlich bedeutet dies, dass UITableViewController standardmäßig arbeitet (da die UITableView die erste Ansicht ist).Layout Guide Einer der Verantwortlichkeiten eines View Controller Containers besteht darin, seine Ansichten für die View Viewer zu gestalten. Dieser Führer geht über, wie man es kontrollieren kann. Reveal vs Peek Betrag So legen Sie die horizontale Position der Draufsicht fest, wenn sie an einer Seite verankert ist. Es ist wichtig, den Unterschied zwischen den verankerten Decken und verankerten Peek-Beträgen zu kennen, wenn sie mehrere Orientierungen und Bildschirmgrößen unterstützen. Wenn Sie nur eine einzelne Orientierung auf einer bestimmten Bildschirmgröße unterstützen müssen, dann ist der Unterschied egal. Reveal Die horizontale Menge der Unteransicht zu zeigen. Peek Die horizontale Menge der Draufsicht zu zeigen. Die Namenskonvention für die Eigenschaften: Anker (links oder rechts) (Reveal oder Peek) Betrag. Die Kombination aller Möglichkeiten führt zu diesen vier Eigenschaften: anchorLeftPeekAmount anchorLeftRevealAmount anchorRightPeekAmount anchorRightRevealAmount Die Einstellung der Deckungsmenge auf einer Seite berechnet die Peep-Menge für die gleiche Seite und umgekehrt. Die Eigenschaft, die Sie setzen, ist ein fester Wert, der verursacht, dass der andere berechnet wird. Dies ist eine Eigenschaft, die in UIViewController eingebaut ist. Heres eine Beschreibung aus der iOS 7 UI Transition Guide: Die EdgesForExtendedLayout-Eigenschaft verwendet den UIRectEdge-Typ, der jedes der Rechtecke vier Kanten spezifiziert, zusätzlich zur Angabe von none and all. Verwenden Sie edgesForExtendedLayout, um festzulegen, welche Kanten einer Ansicht erweitert werden sollen, unabhängig von der Bar-Transluzenz. Standardmäßig ist der Wert dieser Eigenschaft UIRectEdgeAll. ECSlidingViewController verwendet diesen Wert, um zu entscheiden, welche der Ansichten Kanten sich auf den Container erstrecken. Wenn eine Kante nicht verlängert wird, wird sie in der Layout-Anleitung platziert. Dies ist das gleiche Verhalten wie die UIKit View Controller Container, außer dass die Seitenkanten Bedeutung haben. Verlassen UIRectEdgeTop aus der KantenForExtendedLayout Maske wird die obere Kante an der oberen Layout-Anleitung platzieren. Verlassen UIRectEdgeBottom aus der KantenForExtendedLayout Maske wird die obere Kante an der unteren Layout-Guide. Verlassen UIRectEdgeLeft aus der KantenForExtendedLayout Maske wird die linke Kante, wo die Top-Ansichten rechten Rand wäre, wenn verankert links. Dies betrifft nur View-Controller, die als underRightViewController verwendet werden. Es kann entweder die volle Breite des Behälters einnehmen oder es wird gleich der Deckungsmenge sein (ob es fest oder berechnet ist). Wenn du UIRectEdgeRight aus den Edges zurückgibst, wird die rechte Kante an die Stelle gelegt, wo die obersten Ansichten die linke Kante haben würde, wenn sie richtig verankert wäre. Dies betrifft nur View-Controller, die als underLeftViewController verwendet werden. Es kann entweder die volle Breite des Behälters einnehmen oder es wird gleich der Deckungsmenge sein (ob es fest oder berechnet ist). Das Layout für die Top - und Under Views kann angepasst werden. Dies geschieht das Erstellen eines Objekts, das mit dem ECSlidingViewControllerLayout-Protokoll übereinstimmt und es in der gleitenden View-Controller zurückgibt. Delegate-Methode: slidingViewController: layoutControllerForTopViewPosition: ECSlidingViewControllerLayout hat eine einzige Methode zu implementieren: Es wird erwartet, dass Sie einen CGRect zurückgeben, der einen Frame für den angegebenen ViewController darstellt TopViewPosition. Sie können CGRectInfinite zum Rückfall auf das Standardlayout zurückgeben. Geben Sie einen CGRect zurück, der auf der Basis des SlidingViewController s-View-Frames berechnet wird. Wenn es fixiert ist oder auf dem Bildschirmanzeige basiert, dann können Rotations - und Verbindungsänderungen das Layout brechen. Positionieren Sie die Draufsicht entsprechend den verankerten Beträgen von slidingViewController. Halten Sie die Semantik der TopViewPosition. Zum Beispiel, wenn die topViewPosition ECSlidingViewControllerTopViewPositionAnchoredRight ist. Dann positioniere die obere Ansicht irgendwo nach rechts. Da sind die oben genannten Vorschläge. Du musst ihnen nicht folgen. Kennen Sie einfach die Konsequenzen, die Sie das Rotationslayout oder die Semantik der ECSlidingViewController API brechen können.

No comments:

Post a Comment