IOS 11: UICollectionView: при появлении прокрутки происходит

когда мой UIViewController появляется с UICollectionView внутри, содержимое немного прокручивается при появлении.

Я реализовал scrollViewDidScroll:, и я регистрирую contentOffset.y:

-20.000000
-20.000000
0.000000
0.000000

Это происходит только на iOS 11 (симулятор и устройство), а не на iOS 10 или iOS 9. Кто-нибудь еще испытывает это?

ИЗМЕНИТЬ ОЧЕНЬ ВЕРОЯТЬ: это происходит только тогда, когда viewDidLoad НЕ вызывается, т.е. когда UIViewController уже существует и снова появляется, но не при первом показе этого UIViewController...

Ответ 1

В iOS 11 contentInset.top может быть добавлен в UIScrollView и подклассы (UICollectionView, UITableView), в то время как в вашей иерархии представлений отображаются строка состояния, navigationBar или другой контент.

Эта вставка исходит из нового свойства adjustContentInset. (doc: adjustedContentInset)

Чтобы удалить эту дополнительную вставку, установите настройку вставки содержимого на вашем scrollView, чтобы никогда:

[self.myScrollView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];

Дополнительная информация в видео WWDC17: Обновление вашего приложения для iOS 11 в 19 '