UICollectionView mit ContentInset nicht Scrollen ganz nach Unten
Ich bin Einstellung der Inhalte Abzugs von einem UICollectionView:
[_collectionView setContentInset:UIEdgeInsetsMake(0.f, 0.f, 100.f, 0.f)];
Dann bin ich scrollen programmgesteuert den ganzen Weg auf den Boden der UICollectionView mit dieser Methode:
- (void)scrollToLastMessageAnimated:(BOOL)animated;
{
if (_messages.count == 0) { return; }
NSUInteger indexOfLastSection = _messagesBySections.count - 1;
NSInteger indexOfMessageInLastSection = [_messagesBySections[indexOfLastSection] count] - 1;
NSIndexPath *path = [NSIndexPath indexPathForItem:indexOfMessageInLastSection
inSection:indexOfLastSection];
[_collectionView scrollToItemAtIndexPath:path
atScrollPosition:UICollectionViewScrollPositionCenteredVertically
animated:animated];
}
Es ist nach unten scrollen, aber es ignoriert die contentInset, was bedeutet, dass die letzten Zellen sind unter dem angegebenen Inhalt Einschub:
Das linke Bild zeigt, wie es erscheinen jetzt nach der Sicht erscheinen. Im rechten Bild ist, dass ich manuell gescrollt werden weiter unten auf die Letzte Nachricht.
Ich bin mit AutoLayout, irgendwelche Ideen, warum dies geschieht?
EDIT:
Hier ist ein screenshot von der IB-setup:
- Wie sind Sie mit der Einstellung der unteren Einschränkung? Dieses problem höchstwahrscheinlich hat zu tun mit der Größe der Sammlung anzuzeigen und zu wenig/nichts zu tun mit dem Inhalt eingelassen.
- Nehmen Sie einen screenshot, um eine Idee über das layout, das Sie Hinzugefügt haben
- Ich denke, dass Ihr _collectionView Höhe ist das Problem. Sie sollten die Höhe, bis der Blick auf den Bildschirm
- ok, ich habe einen screenshot von meinem IB-setup... siehe oben...
- Nun gut, ich will die transluzente Wirkung der UIToolbar, wenn die Nachrichten Blättern darunter. Aus diesem Grund, die UICollectionView geht unter die UIToolBar, und ich bin der Einstellung der contentInset.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Heute, durch Zufall entdeckte ich die Lösung!!!
Wählen Sie Ihr view-controller und wählen Sie die option "Anpassen Scroll-View-Einsätze".
Diese option nicht aktiviert, iOS nicht automatisch passen Sie Ihre Einsätze der Ansicht (und wahrscheinlich seine subviews), verursacht das Probleme für mich ... es Deaktivieren und konfigurieren Sie die scroll-Einschübe-wie dies programmatisch:
Wenn Sie mit flow-layout versuchen, _collectionView.collectionViewLayout.sectionInset.
swift version
Möglich-Ausgabe
Sie haben den collectionView unterhalb der Symbolleiste und die zusätzlichen Einschränkungen nach unten superview für beide Ansichten.
Lösung
Legen Sie die Einschränkungen der toolbar nach unten, führende und legen Sie die Breite und Höhe, um Feste Größe. Für Ihre collectionView legen Sie die Einschränkungen nach oben, nach unten mit der Symbolleiste, die zu den führenden superview und (alternative) mit fester Größe in Breite
Update
CollectionView
Befolgen Sie diese Schritte, um es arbeiten:
Überprüfen Sie Ihre Sammlung anzuzeigen, und setzen Sie es nicht unter der Symbolleiste, und fügen Sie diese Einschränkungen, indem Sie Ihre collectionView auf Dokumentgliederung, klicken Sie Strg, und ziehen Sie es, um Ihre Ansicht, die ein popup angezeigt wird, halten Sie die Umschalttaste gedrückt, und wählen Sie diese Einschränkungen.
Symbolleiste
Überprüfen Sie die führende und Unterseite, indem Sie mit Strg in Sicht. Und fügen Sie eine Feste Breite und Höhe für die Symbolleiste.
Umgang mit scrollen, bevor viewAppears
[collectionView setShowsHorizontalScrollIndicator:NO]; [collectionView setShowsVerticalScrollIndicator:NO];
Können Sie die
referenceSizeForFooterInSection
Funktion in der viewController-Klasse:Setzen Sie einfach die Höhe Ihrer gewünschten Wert ein.