программно настроить collectionView для safeArea

Я пытаюсь настроить представление коллекции с горизонтальной прокруткой, в котором есть ячейки с размером CGSize (ширина: view.frame.width, высота: view.frame.height). Однако мои ячейки частично закрыты сверху панелью навигации, и использование краевых вставок не подходит для всех устройств. Как бы я установил верхнюю часть своих ячеек в нижней части новой панели навигации iPhone X?

Вот в чем проблема. CollectionView устанавливается под панелью навигации по умолчанию.

Вот в чем проблема


person Explorer    schedule 29.01.2018    source источник
comment
Опубликуйте также свой код.   -  person Jeroen Heier    schedule 29.01.2018


Ответы (2)


if #available(iOS 11.0, *) {
    collectionView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
} else {
    collectionView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true
}

Вероятно, вам также следует учитывать нижнюю безопасную зону, особенно для iPhone X (view.safeAreaLayoutGuide.bottomAnchor и bottomLayoutGuide.topAnchor).

person liquid    schedule 29.01.2018
comment
Да, я попробовал это примерно за 10 минут до того, как вы упомянули об этом. Не знаю, почему я не подумал об этом раньше. Всегда смешно, когда решение кажется таким ясным! - person Explorer; 29.01.2018

Я думаю, что отмеченный ответ - неправильный способ работы с безопасными зонами на iOS.

С ScrollViews, TableViews и CollectionViews стандартный способ работы с ними состоит в том, чтобы прикрепить края к представлению ViewController, но затем установить настройку вставки содержимого:

collectionView.contentInsetAdjustmentBehavior = .always

Это означает, что содержимое будет хорошо прокручиваться в нижней части экрана.

person Leon    schedule 28.12.2020