2017-03-26 2 views
1

Ich habe eine UICollectionView, die die gesamte Ansicht ist, aber es lebt in "view" (es ist nicht UICollectionViewController). Hinzufügen einer Zelle zu dieser Sammlung Ansicht zeigt sie in der folgenden Reihenfolge in Storyboard:uicollectionview entfernen top padding

Storyboard View

Dies ist, wie es in dem Emulator aussieht:

Emulator View

Ich verstehe nicht, wie man werde diese Ansicht los. Alle Anzeigen sind im Storyboard Size Inspector für die Sammlungsansicht auf Null gesetzt. Nur um sicher zu sein, habe ich auch den folgenden Code:

override func viewWillLayoutSubviews() { 
    let layout = self.collectionViewProducts.collectionViewLayout as! UICollectionViewFlowLayout 

    let containerWidth = UIScreen.main.bounds.size.width - 40.0 
    let itemWidth = (containerWidth/3.0) 
    let itemHeight = (itemWidth/0.75) + 30 

    layout.sectionInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0) 

    layout.itemSize = CGSize(width: itemWidth, height: itemHeight) 
} 

Wie kann ich diese Top-Padding loswerden?

+0

Haben Sie versucht das Hinzufügen self.collectionView.contentInset = UIEdgeInsetsZero self.collectionView.scrollIndicatorInsets = UIEdgeInsetsZero. Entschuldigung für Swift 2.3 Syntax – webjunkie

+0

Überprüfen Sie meine aktualisierte Antwort ... – Joe

Antwort

5

Sie können das Top-Padding-Problem beheben, indem Sie eine der folgenden Methoden in Betracht ziehen.

Methode 1: Natürliche Art und Weise, Ihr Problem zu beheben, indem Sie Collection dimensions von StoryBoard richtig einrichten.

enter image description here

Methode 2: Sie können Adjust Scroll View Insets von Ihrem StoryBoard: **Updated**

Sie collection frame in viewDidLayoutSubviews oder viewWillLayoutSubviews

override func viewDidLayoutSubviews() { 
    collectionView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height) 
} 

Methode 3 validieren.

enter image description here

Methode 4: Sie dieses Problem beheben können programmatisch durch Einstellung Collection contentInset.

collectionView.contentInset = UIEdgeInsets(top: **Any Value**, left: 0, bottom: 0, right: 0) 

Output mit oberer Polsterung 5:

enter image description here

Output mit oberer Polsterung 44:

enter image description here

Output mit oberer Polsterung 64:

enter image description here

2

Ich denke, weil diese ViewController in einem NavigationController eingebettet ist. Lassen Sie diese Viewcontroller wählen Sie im Storyboard und deaktivieren einstellen Scroll Ansicht Insets:

enter image description here

2

Ihr Make Navigation Controller > NavigationBar durchscheinend durch die Durchlässiger Kontrollkästchen in IB unchecking> Inspector Attribut, und es wird funktionieren.

+0

Kämpfte damit viel zu lange und das war die Lösung! –

Verwandte Themen