UICollectionView 的框架大小大于 UIScreen 的大小
Frame size of UICollectionView is bigger than size of UIScreen
在我 UIViewController
的 viewDidLoad
函数中调用
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
在添加视图之前调用,因此它的大小仍与故事板上的大小相同。您可以获得它在内部方法 viewWillApear
、viewDidAppear
和 viewDidLayout
中显示的大小。请记住,这些方法可能会被多次调用。
在我 UIViewController
的 viewDidLoad
函数中调用
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
在添加视图之前调用,因此它的大小仍与故事板上的大小相同。您可以获得它在内部方法 viewWillApear
、viewDidAppear
和 viewDidLayout
中显示的大小。请记住,这些方法可能会被多次调用。