Intereting Posts
Как проверить действительный объект в Objective-C? GPUImage: размытие маски Автоматическая игра в iPad-приложениях с использованием HTML 5 Приложение iOS случайно падает в WebCore Совместимость с iOS 4 и 5: подскажите пользователям обновить iOS Панель навигации скрывается при прокрутке и прокрутке Работа с файлами в кордове и ионной совместимости iOS, Android В анимации Swift lottie не воспроизводятся некоторые json-файлы, которые воспроизводятся на андроиде Запись данных акселерометра в файл на Iphone IOS iOS, AVPlayer – циклический сегмент MP3 «Файл модуля был создан старой версией компилятора» при попытке запуска теста пользовательского интерфейса на Xcode CoreData: легкая миграция из xcdatamodel версии n в n + 5 Использование метода UIViewControllerTransitionCoordinator animateAlongsideTransition Программирование экстренного вызова на iPhone AVAssetWriterInput Video Не получается

Полноэкранный вопрос UICollectionViewCell на iPhone X в ландшафте

В моем приложении я представляю контроллер вида modally, и этот контроллер представления содержит UICollectionView который заполняет супервизор. Каждая ячейка в представлении коллекции должна быть полноэкранной – того же размера, что и границы представления. Для этого я просто устанавливаю itemSize элемента UICollectionViewFlowLayout как размер viewDidLayoutSubviews в viewDidLayoutSubviews .

Это хорошо работает на всех устройствах и ориентациях, за исключением iPhone X в ландшафте. Когда вы представляете этот экран в этом случае, кажется, что поля безопасности в области безопасности входят в игру и влияют на позиционирование ячейки. Ячейка сдвигается с левой стороны дисплея и выдвигается так, что нижняя часть ячейки выравнивается по вертикали центра домашнего индикатора. Проверка макета с помощью View Debugger показывает, что представление коллекции заполняет экран, но позиция Y ячейки равна -10.67, а позиция X равна 0, даже если она вставлена ​​из ведущего представления коллекции. Примечательно, что это занесено в консоль:

 The behavior of the UICollectionViewFlowLayout is not defined because: the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values. The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x7fa6311253b0>, and it is attached to <UICollectionView: 0x7fa63207e800; frame = (0 0; 812 375); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x608000244d70>; layer = <CALayer: 0x60800023ef00>; contentOffset: {-44, 0}; contentSize: {0, 812}; adjustedContentInset: {0, 44, 21, 44}> collection view layout: <UICollectionViewFlowLayout: 0x7fa6311253b0>. 

Что здесь происходит и как это можно решить?

По умолчанию iOS 11 автоматически настраивает вставки содержимого для iPhone X в альбомной ориентации, вызывая эту проблему. Чтобы решить эту проблему, вы можете просто отключить автоматическую настройку вставки содержимого, поскольку в этом случае она не нужна и не нужна.

collectionView.contentInsetAdjustmentBehavior = .never