Edgesforextendedlayout Scrollview Ios


edgesForExtendedLayoutautomaticallyAdjustsScrollViewInsetsextendedLayoutIncludesOpaqueBars edgesForExtendedLayoutUIRectEdgeTop childviewcontrollerUINavigationController Unterviewcontroller edgesForExtendedLayoutUIRectEdgeTopchildVCviewNavigationbaroffsetY automaticallyAdjustsScrollViewInsetsUINavigationControllerUIToolbarViewControllerViewScrollviewedgesForExtendedLayouttopScrollViewContentInsectScrollviewstatubarnavigation baredgesForExtendedLayouttopnavigation barstatubarautomaticallyAdjustsScrollViewInsets - ndashNavigationControllerYESscrollviewcontentInsectsPSviewtableviewscrollviewchildviewcontroller Geschrieben von chesterlee 2014.08.24 23.58 iosYou Recht verwechselt werden. Es ist ein wenig kontraintuitiv, aber die obere und untere Layout-Guides sind irrelevant für die Konfiguration eines UIScrollView, so dass seine scrollbaren Inhalte unterläuft die transluzente Navigationsleiste, die die Wirkung, die Sie versuchen, zu erreichen sind. Was zu tun ist Angesichts der Ansichtshierarchie, die Sie im zweiten Bild gezeigt haben, müssen Sie dies auf iOS8 tun: Konfigurieren Sie den View-Controller so, dass Extended Edges unter der oberen Leiste aktiviert ist (in Code, verwenden Sie edgesForExtendedLayout). Dadurch wird sichergestellt, dass die View-Controller ihre Root-Ansicht legt, so dass sie die Navigationsleiste überlappt. Konfigurieren Sie die Einschränkungen für die Bildlaufansicht, sodass die obere Kante der Bildlaufansichten einen Nullversatz von der oberen Kante ihrer Überwachungsfläche und nicht den Nullraum von der obersten Layoutanleitung aufweist. Dadurch wird sichergestellt, dass die Sammlungsansicht die Stammsicht ausfüllt und damit auch die Navigationsleiste, die für den Scrollansichtsinhalt erforderlich ist, unterlegt, um unter der Navigationsleiste scrollen zu können. (IB könnte Sie auf diese kämpfen. Siehe die Fußnote unten.) So jetzt, wie Sie sicherstellen, dass die Scroll-Ansicht hat eine Idee, wo die Navigationsleiste ist, so dass (zum Beispiel) es doesntt immer seinen Inhalt unter der Navigationsleiste Die Antwort hat nichts mit Layout-Guides zu tun. Aktivieren Sie im View-Controller das Kontrollkästchen Scroll View Insets (oder im Code, automatischAdjustsScrollViewInsets) anpassen. Dies führt dazu, dass der View-Controller die Scroll-Ansichten contentInset-Eigenschaft automatisch anpasst, sodass die Scroll-Ansicht seinen Inhalt entsprechend platziert. Was ist los Warum ist dies die Antwort Und warum ist es so verwirrend Frankly, seine leicht zu verwirren, weil die obere und untere Layout-Führer sind prominent präsentiert uns als Elemente, die Layout-Informationen über transluzente überlagerte Elemente zu transportieren. Allerdings sind sie nicht der einzige transparenz-bewusste Layout-Mechanismus. Sie sind direkt nur für die Positionierung von normalen Unteransichten relevant, d. h. nicht für die View-Controller-Root-Ansicht und nicht für Inhalte innerhalb einer UIScrollView. Inhalte innerhalb einer Scroll-Ansicht (oder einer Unterklasse wie UICollectionView und UITableView) werden immer komplizierter positioniert, wobei die Scroll-Ansicht selbst von Eigenschaften wie contentInset betroffen ist. ContentOffset. Etc. (Wirklich, wenn Scroll-Ansicht-Layout waren eine einfache Sache, warum sollte Apple haben WWDC-Sitzungen zu blättern Ansicht Layout für die letzten vier Jahre in Betrieb) Zusammenfassend, wie die oben genannten Schritte, die drei verschiedenen transluzenzbewussten Mechanismen für die Verwaltung Layout ist wie folgt: Extendeds Kanten bestimmt, ob der View-Controller seine Root-Ansicht positioniert, so dass er die Navigationsleiste überlappt. Layout-Hilfslinien stellen eine Metrik zur Verfügung, die anzeigt, wo der Hauptinhaltsbereich ist, wobei lichtdurchlässige Balken berücksichtigt werden. Sie können diese mit Auto-Layout, um normale Ansichten, so dass sie nicht unterlegen. Oder Sie können auf die Zahlenwerte im Code zugreifen. Scroll-Ansicht Die Insets sind der richtige Weg, um sicherzustellen, dass ein Scroll-Sichteninhalt unterschneiden kann, aber nicht immer unterschneidet. Die automatischeAdjustsScrollViewInsets-Eigenschaft auf dem View-Controller kann dies für Sie automatisch in einfachen Fällen. (Vermutlich bewirkt diese Eigenschaft nur, dass der View-Controller die Bildlaufansichten contentInset auf der Grundlage der gleichen Werte aktualisiert, die er über die Layout-Guides ausgibt.) Wenn Sie also die Einsätze selbst managen müssen, ist das der Fall Manie Eine Fußnote zum Kämpfen mit IB: Leider kann Interface Builder Sie kämpfen, wenn Sie versuchen, die Scroll-Sichtkante auf ihre Superviews Rand beschränken. Wenn Sie einen Strg-Ziehen aus der Scroll-Ansicht in die Superview-Ansicht durchführen, wird beim Öffnen des Menüs der möglichen Einschränkungen zwischen diesen Ansichten möglicherweise versucht, die Scroll-Ansicht gegen die View-Controller-Layout-Guides zu beschränken. Dies liegt daran, dass IB gedankenlos Layout-Führer bevorzugt, um Kanten zu überwachen, wenn die Superview die Root-Ansicht ist. Aber wenn Sie mit einem Scrollview arbeiten, ist dies die falsche Sache. Warum Angenommen, Sie akzeptieren eine Einschränkung für die Layout-Anleitung. Dann werden Sie am Ende mit einer obersten Einschränkung auf Ihre scrollview, die es beschränkt, um topLayoutGuide-64.0. Der -64.0 ist ein hartcodierter Wert, der die genaue Höhe einer Navigationsleiste kompensiert. Also, was passiert, wenn ein schöner Tag die Nav-Bar nicht gleich 64pt Oder wenn Sie einfach ausschalten Sie die Nav-Bar ganz Oder wollen Sie diese Szene in einem Kontext ohne Navigationsleiste wieder verwenden Antwort: dann erhalten Sie ein defektes Layout. So wie Sie zwingen, IB, um eine Einschränkung von der Scroll-Ansicht zu seinem superviews Rand, im Gegensatz zu der Layout-Anleitung zuzufügen Soweit ich sagen kann, ist die Antwort, dass Sie nicht, dass Einschränkung korrekt in IB, indem Sie eine Strg-Drag Zwischen den Ansichten. Stattdessen müssen Sie die Ansicht auswählen und dann das Pin-Steuerelement am unteren Rand der Leinwand verwenden. Dieses ist das, das wie ein Kapital H mit einem Kasten in seiner Mitte aussieht. Im oberen Bereich des Pin-Popup-Dialogs können Sie die Dropdown-Steuerelemente neben den Textfeldern verwenden, um festzulegen, ob die Space-Constraint eine Layout-Anleitung oder eine Superview bindet. Dies wird unten gezeigt:

Comments

Popular Posts