2016-04-02 14 views
6

Ich habe eine App, die einen Nav Contoller als anfängliche VC verwendet, die dann einen UIViewContoller hat, der eine UIView in der oberen Hälfte und eine UIContainerView enthält unten. In UIContanerView binde ich eine funktionierende UICollectionView ein, die Bildschaltflächen enthält, die in Detailansichten übergehen.Einbetten einer Sammlungsansicht in eine Containeransicht - zusätzlicher Leerraum oben

Das Problem ist, dass Leerraum jetzt am oberen Rand der UICollectionView angezeigt wird. Vor diesem Hintergrund ist rund 64 Pixel hoch, scheint es ein Ghosting einer Navigationsleiste 44px + Statusleiste 20px = 64.

Extra space of around 64px in my UICollectionView (I set it gray)

Und zu sein, wenn ich nach oben alles sieht gut aus und funktioniert wie erwartet, und es erlaubt mir auch, Ihnen zu zeigen, was ich das Layout wie beim Start zu sehen erwartet:

What I expected the launch layout to look like

Ein Ausschnitt meiner Storyboard ist unten, wenn das hilft:

Storyboard

+0

Es ist eine Weile her, dass ich dieses Problem hatte, und ich weiß nicht mehr genau die Auflösung :-(. IIRC Das Problem besteht darin, dass sich die Containeransicht in einer Navigationsansicht befindet und das Betriebssystem versucht, sehr hilfreich zu sein, indem der Inhalt um die Höhe der Navigationsansicht nach unten verschoben wird. Wenn ich mich recht erinnere, ist eine Sache, die Sie überprüfen können, die "LayoutMargins" der Containeransicht. Ich denke, Sie werden feststellen, dass der obere Rand gesetzt ist, und Sie können versuchen, das zu klären. –

+0

überprüfen Sie dies ... http://stackoverflow.com/questions/23786198/uicollectionview-how-can-i-remove-the-space-on-top-first-cells-row –

+0

Danke, lassen Sie mich auf die eine Zeile antwort: 'automaticallyAdjustScrollViewInsets = false' –

Antwort

10

Ja, das könnte sein, weil der in der Containeransicht eingebettete Kind-View-Controller den Eindruck erweckt, dass es ein direktes Kind von UINavigationController ist, was wiederum CollectView 64 pt-Einfügungen zurücklässt.

dieses Problem zu lösen, in Ihrem Controller Interface Builder Kind Ansicht, Scroll Einsätze

In your child view controller interface builder, unmark adjust scrollView insets

Dies sollte Ihr Problem lösen

UPDATE

Als Dan vorgeschlagen unmark einstellen, wir können es auch programmatisch reparieren, indem wir

aufrufen
automaticallyAdjustsScrollViewInsets = false 

in viewDidLoad() Ihren UIViewController

+1

Das ist es und stimmt mit der Antwort überein, die ich über den Link @Scott Thompson gefunden habe. Ich habe tatsächlich die eine Zeile in der viewDidLoad() platziert, so dass es weniger "versteckt" wäre, wenn ich Monate zurückkomme ...; o) 'automatischAdjustScrollViewInsets = false' –

+0

Es scheint, dass sowohl der Container Controller als auch der Child Controller sein müssen nicht aktiviert, damit es funktioniert. – Terence

+0

Es wird nur für den Controller benötigt, der scrollView enthält! –