Frage UICollectionView fügt oberen Rand hinzu


Ich möchte ein UICollectionView-Steuerelement platzieren, das die Daumen horizontal zeigt (nur eine einzige Linie von Thumbs). Aus irgendeinem Grund drücken die UICollectionView die Daumen 44 Pixel nach unten, so dass die "0" Höhe tatsächlich "44" ist. Ich nehme an, es könnte diesen Raum hinzufügen, um die Höhe der Navigationsleiste zu berücksichtigen (ich nehme einfach an). Da meine UICollectionView nur auf einem Teil des Bildschirms ist, möchte ich diesen Rand nicht. Gibt es eine Möglichkeit, es zu entfernen?


74
2017-10-16 18:52


Ursprung


Antworten:


Das Problem liegt möglicherweise in den Inhaltseinfügungen der Sammlungsansicht. Versuchen Sie hinzuzufügen self.automaticallyAdjustsScrollViewInsets = NO; in Sicht Controller viewDidLoad Methode.


185
2017-10-16 19:08



Sie können dies auch im Storyboard festlegen.

Stellen Sie sicher, dass Sie den ViewController ausgewählt haben, und deaktivieren Sie dann "Bildlaufeinfügeeinstellungen anpassen".

enter image description here

Ich habe jedoch nicht getestet, was diese IB / Storyboard-Methode auf iOS6 macht. Mit der Code-Methode müssen Sie überprüfen, ob der VC auf die Methode reagiert:

if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}

87
2018-01-14 11:54



Ich habe Folgendes gefunden:

self.edgesForExtendedLayout = UIRectEdgeNone;

Im View-Controller, in den ich die UICollectionView geladen habe, wurde das Problem gelöst, da ich die akzeptierte Antwort nicht zum Laufen bringen konnte.

Die Frage, auf die ich diese Antwort gefunden habe, kann gefunden werden Hier und bietet eine äußerst detaillierte und interessante Erklärung des Unterschieds zwischen automatisch angepassten Scroll-View-Einfügungen, erweiterten Layouts und Kanten für erweiterte Layouts.

Es ist eine Lektüre wert


16
2018-06-18 00:43



Vielleicht können Sie versuchen, diesen Wert auf 0 zu setzen, indem Sie das Layout des Delegiertenflusses der Sammlungsansicht verwenden:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT);
}

Ändern Sie den Wert Ihrer Auffüllung.


5
2017-10-16 18:57



Schnell 3:

Zuerst möchten Sie die ViewControllers einstellen automaticallyAdjustsScrollViewInsets zu falsch:

self.automaticallyAdjustsScrollViewInsets = false

Dann sollten Sie die Kanteneinsätze entsprechend anpassen können:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    //top, left, bottom, right
    return UIEdgeInsets(top: 10, left: 0, bottom: 0, right: 0)
}

2
2018-01-22 06:53



Ähnlich wie @Sviatoslav antworten, können Sie Folgendes versuchen:

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    yourCollectionView.contentOffset = CGPointMake(0, 0);
}

-3
2017-07-02 00:30