在我的viewDidLoad
的UIViewController
func我打电话
print("\(UIScreen.main.bounds.size.width) \(collectionView.frame.width)")
它打印出来
320.0 375.0
这怎么可能? UICollectionView
应该具有相同的宽度,mb更小但绝对不会更大
故事板中此视图的设置:
每个约束设置为
所以我在iPhone SE Simulator上测试它,但在Storyboard中我有iPhone 8。
但我相信当我使用autolayout(约束使我的视图大小匹配安全区域的大小)时,它应该无关紧要
iPhone 8宽度为375点,iPhone SE为320点:
更新
似乎viewDidLoad
在故事板中返回您最后选择的设备的大小(非常难看)
因此,要获得有关视图的正确数据,我必须在viewDidAppear
中获取大小
在Android中,如果某些视图的大小尚未可用(视图尚未膨胀),那么它只返回零(width == 0,height == 0),但在iOS中,您可以在运行时从Xcode Storyboard获得宽度和高度......真的吗?
当您从故事板中实例化视图控制器时,其视图的大小将是故事板上当前设置的大小。将其添加到视图层次结构后,它将具有与屏幕相同的大小。在添加视图之前调用viewDidLoad
,因此它仍然具有与故事板上相同的大小。您可以获得内部方法,viewWillApear
,viewDidAppear
和viewDidLayout
中显示的大小。请记住,这些方法可能会被多次调用。