В viewDidLoad
функции моего UIViewController
я звоню
print("\(UIScreen.main.bounds.size.width) \(collectionView.frame.width)")
и он печатает
320.0 375.0
Как это возможно? UICollectionView
должен иметь ту же ширину, мб меньше, но точно не больше
Настройки этого представления в раскадровке:
каждое ограничение установлено как
Поэтому я тестирую его на симуляторе iPhone SE, но в раскадровке у меня iPhone 8.
Но я считаю, что это не должно иметь никакого значения, когда я использую автомакет (ограничения, чтобы размер моего представления соответствовал размеру безопасной области)
Ширина iPhone 8 составляет 375 точек, а iPhone SE — 320:
Обновить
Кажется, viewDidLoad
возвращает размеры вашего последнего выбранного устройства в раскадровке (довольно уродливо)
Итак, чтобы получить правильные данные о просмотрах, мне нужно получить размеры в viewDidAppear
В Android, если размер какого-либо представления еще недоступен (представление еще не было увеличено), он просто возвращает нули (ширина == 0, высота == 0), но в iOS вы получаете ширину и высоту из раскадровки Xcode во время выполнения ... Действительно?