CollectionView AutomateAdjustsScrollViewInsets не работает должным образом - PullRequest
0 голосов
/ 08 июня 2018

Я получил TabBar, который содержит CollectionViews в нем.Недавно я столкнулся с проблемой того, что первый CollectionViews ContentInset равен 0 сверху, но только сначала.Это означает, что он находится под TopBar, когда он не должен, и когда я перемещаюсь по TabBar, он исправляет.

Я следовал этому вопросу , но решения просто ничего не делают.Они также предлагают сделать мой прозрачный TopBar непрозрачным, и я действительно хочу избегать этого.

Вот изображение, объясняющее немного больше ... Вот как загружается контент: enter image description here

Элементы из моей коллекции отображаются под моей верхней панелью, что означает, что ContentInset устанавливает 0 вместо правильной автоматической настройки.Затем, когда я перемещаюсь по вкладке, она фиксируется на обеих вкладках, как я говорил ранее.

Я пытался отключить AutomaticsAdjustsScrollViewInsets из CollectionView и делал это вручную, учитывая размер панели навигации и строки состояния.

this.AutomaticallyAdjustsScrollViewInsets = false;
this.CollectionView.ContentInset = new UIEdgeInsets(UIApplication.SharedApplication.StatusBarFrame.Height + this.NavigationController.NavigationBar.Frame.Height, 0, 0, 0);

Сначала это, похоже, сработало, но потом, когда я перемещаюсь по TabBar, ContentInset изменяется, и он перемещается вниз, как будто значение параметра AutomaticsAdjustsScrollViewInsets, установленное в false, не работает.

Любые идеи о том, как решить эту проблему, не поворачивая Navbar непрозрачным?

1 Ответ

0 голосов
/ 11 июня 2018

На ios 11, если вы хотите отключить функцию, которую AutomaticallyAdjustsScrollViewInsets делал раньше, мы должны использовать ContentInsetAdjustmentBehavior.Сначала установите AutomaticallyAdjustsScrollViewInsets в false в событии ViewDidLoad(), чтобы адаптировать более низкие версии iOS.Затем на iOS 11+ добавьте следующий код:

public override void ViewWillAppear(bool animated)
{
    base.ViewWillAppear(animated);

    if (!AutomaticallyAdjustsScrollViewInsets)
    {
        if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
        {
            MyCollectionView.ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.Never;
        }
    }
    else
    {
        if (UIDevice.CurrentDevice.CheckSystemVersion(11, 0))
        {
            MyCollectionView.ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.Automatic;
        }
    }
}

Наконец вы можете установить ContentInset CollectionView вручную, чтобы соответствовать вашему запросу.

...