Monday, 13 February 2017

Edgesforextendedlayout Uiviewcontroller Eindämmung

In meinem Navigationsstapelkind setzte ich edgesForExtendedLayout ein. Wenn ich die rückseitige Taste anklicke, wird die UITableView in meinem Elternteil verschoben, als ob die Navigationsleiste nicht vorhanden ist. (Die Navigationsleiste deckt die Tabelle ab). Warum hat die childs Randeinstellung sein Elternteil Ich möchte nur, dass es den aktuellen viewController beeinflußt. In meinem Elternteil, ist dies, wie ich die UITableView erstellt: Könnte es sein, dass ich die tableViews Rahmen falsch Ich möchte die Tabelle unterhalb der Navigationsleiste zu starten, aber Ende vor der Registerkarte bar. Ich habe versucht, Ihr Problem wie folgt zu reproduzieren: Richten Sie ein UITableView in einem UIViewController mit einer einzigen Zelle, die einen neuen UIViewController schiebt. In diesem View Controller ist viewDidLoad. Ich set self. edgesForExtendedLayout. None. Wenn ich quattrequot drücken, um zurück zu dem UITableViewController zu gehen. Ich sehe keine Änderung der Position der Tabellenansicht. Ändern Sie die EdgesForExtendedLayout auf dem UINavigationController direkt ndash JAL Apr 27 16 um 20: 15 In iOS7 starten die View-Controller standardmäßig das Vollbild-Layout. Gleichzeitig haben Sie mehr Kontrolle darüber, wie es seine Ansichten ausgibt, und das ist mit diesen Eigenschaften getan: Grundsätzlich legen Sie mit dieser Eigenschaft fest, welche Seiten Ihrer Ansicht erweitert werden können, um den gesamten Bildschirm zu decken. Stellen Sie sich vor, Sie schieben einen UIViewController in einen UINavigationController. Wenn die Ansicht des View-Controllers ausgelegt ist, wird es gestartet, wo die Navigationsleiste endet, aber diese Eigenschaft stellt fest, 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 genommen (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 werden Sie diesen Wert auf UIRectEdgeNone setzen. So dass Sie sagen, die Ansicht-Controller nicht erweitern Sie die Ansicht auf den Bildschirm zu decken: Diese Eigenschaft wird verwendet, wenn Ihre Ansicht ein UIScrollView oder ähnliches ist, wie ein UITableView. Sie möchten, dass Ihre Tabelle anfängt, wo die Navigationsleiste endet, weil Sie den gesamten Inhalt nicht sehen, wenn nicht, aber gleichzeitig möchten Sie, dass Ihr Tisch den gesamten Bildschirm beim Scrollen abdeckt. In diesem Fall wird das Setzen von KantenForExtendedLayout 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 ist praktisch, wenn Sie lassen Sie die View-Controller automatisch passen Sie die Einfügungen (Einstellung dieser Eigenschaft auf YES, auch der Standardwert) wird es Insert an der Spitze der Tabelle hinzufügen, so dass die Tabelle beginnt, wo die Navigation Bar-Enden, aber die Spirale wird den gesamten Bildschirm zu decken. Das ist, wenn auf NEIN eingestellt ist: und JA (standardmäßig): In beiden Fällen blättert die Tabelle hinter der Navigationsleiste, aber im zweiten Fall (JA) wird sie unterhalb der Navigationsleiste gestartet. Dieser Wert ist nur eine Ergänzung zu den vorherigen. Wenn die Statusleiste undurchsichtig ist, werden die Ansichten nicht um die Statusleiste erweitert, es sei denn, dieser Parameter ist JA. Wenn Sie Ihre Ansicht erweitern, um die Navigationsleiste (edgesForExtendedLayout zu UIRectEdgeAll) zu decken, und der Parameter NO (Standard) ist, wird sie die Statusleiste nicht decken, wenn sie undurchsichtig ist. Wenn etwas nicht klar ist, schreiben Sie einen Kommentar und Kranke Antwort darauf. Wie iOS weiß, was UIScrollView verwenden iOS greift die erste Unteransicht in Ihrer viewcontroller-Ansicht, so dass die eine bei Index 0, und wenn seine eine Unterklasse von UIScrollView dann die erklärten Eigenschaften anwendet es. Natürlich bedeutet dies, dass UITableViewController standardmäßig arbeitet (seit der UITableView die erste Ansicht ist). In iOS7 starten die View-Controller standardmäßig das Vollbild-Layout. Gleichzeitig haben Sie mehr Kontrolle darüber, wie es seine Ansichten ausgibt, und das ist mit diesen Eigenschaften getan: Grundsätzlich legen Sie mit dieser Eigenschaft fest, welche Seiten Ihrer Ansicht erweitert werden können, um den gesamten Bildschirm zu decken. Stellen Sie sich vor, Sie schieben einen UIViewController in einen UINavigationController. Wenn die Ansicht des View-Controllers ausgelegt ist, wird es gestartet, wo die Navigationsleiste endet, aber diese Eigenschaft stellt fest, 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 genommen (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 werden Sie diesen Wert auf UIRectEdgeNone setzen. So dass Sie sagen, die Ansicht-Controller nicht erweitern Sie die Ansicht auf den Bildschirm zu decken: Diese Eigenschaft wird verwendet, wenn Ihre Ansicht ein UIScrollView oder ähnliches ist, wie ein UITableView. Sie möchten, dass Ihre Tabelle anfängt, wo die Navigationsleiste endet, weil Sie den gesamten Inhalt nicht sehen, wenn nicht, aber gleichzeitig möchten Sie, dass Ihr Tisch den gesamten Bildschirm beim Scrollen abdeckt. In diesem Fall wird das Setzen von KantenForExtendedLayout 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 ist praktisch, wenn Sie lassen Sie die View-Controller automatisch passen Sie die Einfügungen (Einstellung dieser Eigenschaft auf YES, auch der Standardwert) wird es Insert an der Spitze der Tabelle hinzufügen, so dass die Tabelle beginnt, wo die Navigation Bar-Enden, aber die Spirale wird den gesamten Bildschirm zu decken. Das ist, wenn auf NEIN eingestellt ist: und JA (standardmäßig): In beiden Fällen blättert die Tabelle hinter der Navigationsleiste, aber im zweiten Fall (JA) wird sie unterhalb der Navigationsleiste gestartet. Dieser Wert ist nur eine Ergänzung zu den vorherigen. Wenn die Statusleiste undurchsichtig ist, werden die Ansichten nicht um die Statusleiste erweitert, es sei denn, dieser Parameter ist JA. Wenn Sie Ihre Ansicht erweitern, um die Navigationsleiste (edgesForExtendedLayout zu UIRectEdgeAll) zu decken, und der Parameter NO (Standard) ist, wird sie die Statusleiste nicht decken, wenn sie undurchsichtig ist. Wenn etwas nicht klar ist, schreiben Sie einen Kommentar und Kranke Antwort darauf. Wie iOS weiß, was UIScrollView verwenden iOS greift die erste Unteransicht in Ihrer viewcontroller-Ansicht, so dass die eine bei Index 0, und wenn seine eine Unterklasse von UIScrollView dann die erklärten Eigenschaften anwendet es. Natürlich bedeutet dies, dass UITableViewController standardmäßig arbeitet (da die UITableView die erste Ansicht ist).layout Führer Eine der Aufgaben eines View-Controller-Container ist seine untergeordneten Ansicht Controller Blick auf Layout. Diese Anleitung behandelt, wie Sie es steuern können. Reveal vs Peek Amount Hier legen Sie die horizontale Position der Draufsicht fest, wenn sie an einer Seite verankert ist. Es ist wichtig, den Unterschied zwischen dem verankerten und dem verankerten Blickwinkel zu kennen, wenn mehrere Orientierungen und Bildschirmgrößen unterstützt werden. Wenn Sie nur eine einzelne Orientierung auf einer bestimmten Bildschirmgröße unterstützen müssen, dann ist der Unterschied nicht wichtig. Reveal Die horizontale Menge der Unteransicht zu zeigen. Peek Die horizontale Höhe der Draufsicht zu zeigen. Die Namenskonvention für die Eigenschaften: Anchor (Left oder Right) (Reveal oder Peek) Betrag. Die Kombination aller Möglichkeiten führt zu diesen vier Eigenschaften: anchorLeftPeekAmount anchorLeftRevealAmount anchorRightPeekAmount anchorRightRevealAmount die Menge auf der einen Seite zeigen Einstellung wird die Späh-Betrag für die gleiche Seite zu berechnen und umgekehrt. Die von Ihnen festgelegte Eigenschaft ist ein fester Wert, der die andere berechnet. Dies ist eine Eigenschaft, die in UIViewController eingebaut ist. Heres eine Beschreibung aus dem iOS 7 UI Transition Guide: Die edgesForExtendedLayout Eigenschaft nutzt die UIRectEdge Typ, der keiner und alle zur Angabe jeweils eines Rechtecke vier Kanten, zusätzlich gibt. Verwenden Sie edgesForExtendedLayout, um anzugeben, welche Kanten einer Ansicht erweitert werden sollen, unabhängig von der Balken-Transluzenz. Der Wert dieser Eigenschaft ist standardmäßig UIRectEdgeAll. ECSlidingViewController verwendet diesen Wert, um zu entscheiden, welche der Ansichten die Kanten auf den Container erweitern. 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. Beim Verlassen von UIRectEdgeTop aus der KantenForExtendedLayout-Maske wird die obere Kante an der obersten Layout-Anleitung platziert. Beim Verlassen von UIRectEdgeBottom aus der KantenForExtendedLayout-Maske wird die obere Kante an der unteren Layout-Anleitung platziert. UIRectEdgeLeft aus der edgesForExtendedLayout Maske verlassen wird legen Sie den linken Rand, wo die Aufsichten rechten Rand sein würde, wenn links verankert. Dies betrifft nur View-Controller, die als underRightViewController verwendet werden. Er kann entweder die volle Breite des Behälters einnehmen, oder er entspricht dem Aufschlussbetrag (ob er fest oder berechnet ist). Weggehen UIRectEdgeRight aus der edgesForExtendedLayout Maske legen Sie die rechte Seite, wo die Aufsichten Rand links sein würde, wenn Recht verankert. Dies wirkt sich nur auf View-Controller aus, die als underLeftViewController verwendet werden. Er kann entweder die volle Breite des Behälters einnehmen, oder er entspricht dem Aufschlussbetrag (ob er fest oder berechnet ist). Das Layout für die oberen und unteren Ansichten kann angepasst werden. Dies geschieht, um ein Objekt zu schaffen, die dem ECSlidingViewControllerLayout Protokoll empfangen werden und es in der Schiebe View-Controller Delegatmethode Rückkehr: slidingViewController: layoutControllerForTopViewPosition: ECSlidingViewControllerLayout hat eine einzige Methode zu implementieren: Sie erwartet eine CGRect repräsentieren einen Rahmen für die gegebene Viewcontroller zurückzukehren und TopViewPosition. Sie können CGRectInfinite auf Fallback auf dem Standardlayout zurückgeben. Gibt einen CGRect zurück, der basierend auf dem Viewing-Rahmen des slidingViewController berechnet wird. Wenn es fest ist oder auf dem Bildschirmrahmen, dann Rotation und Grenzen Änderungen können das Layout brechen basiert. Positionieren Sie die Draufsicht gemäß den verankerten Beträgen des slidingViewController s. Halten Sie die Semantik der topViewPosition. Zum Beispiel, wenn die topViewPosition ist ECSlidingViewControllerTopViewPositionAnchoredRight. Dann positionieren Sie die Draufsicht irgendwo nach rechts. Da die oben genannten Vorschläge sind. Sie müssen nicht ihnen folgen. Sie kennen nur die Konsequenzen, die Sie das Rotationslayout oder die Semantik der ECSlidingViewController API brechen können.


No comments:

Post a Comment