UICollectionView 的框架大小大于 UIScreen 的大小

Frame size of UICollectionView is bigger than size of UIScreen

在我 UIViewControllerviewDidLoad 函数中调用

print("\(UIScreen.main.bounds.size.width) \(collectionView.frame.width)")

并打印

320.0 375.0

怎么可能? UICollectionView 应该是一样的宽度,mb 小一点但绝对不会大

故事板中此视图的设置:

每个约束设置为

所以我在 iPhone SE Simulator 上测试它,但在故事板中我有 iPhone 8.

但我相信当我使用自动版式(使我的视图大小与安全区域的大小相匹配的约束)时,它根本不重要

iPhone 8 宽度为 375 点并且 iPhone SE 为 320:

更新

似乎 viewDidLoad returns 你在故事板中最后选择的设备的大小(非常难看)

因此,为了获得有关视图的正确数据,我必须在 viewDidAppear

中获取尺寸

在 Android 中,如果某些视图的大小尚不可用(视图尚未膨胀),那么它只是 returns 零(宽度 == 0,高度 == 0),但在 iOS 中,您在运行时从 Xcode 情节提要中获取宽度和高度...真的吗?

当您从情节提要中实例化视图控制器时,其视图的大小将是情节提要中当前设置的大小。添加到视图层次结构后,它将与屏幕具有相同的大小。 viewDidLoad 在添加视图之前调用,因此它的大小仍与故事板上的大小相同。您可以获得它在内部方法 viewWillApearviewDidAppearviewDidLayout 中显示的大小。请记住,这些方法可能会被多次调用。