UICollectionView的帧大小大于UIScreen的大小

问题描述 投票:0回答:1

在我的viewDidLoadUIViewController func我打电话

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

它打印出来

320.0 375.0

这怎么可能? UICollectionView应该具有相同的宽度,mb更小但绝对不会更大

故事板中此视图的设置:

enter image description here

每个约束设置为

enter image description here

所以我在iPhone SE Simulator上测试它,但在Storyboard中我有iPhone 8。

enter image description here

enter image description here

但我相信当我使用autolayout(约束使我的视图大小匹配安全区域的大小)时,它应该无关紧要

iPhone 8宽度为375点,iPhone SE为320点:

enter image description here

更新

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

因此,要获得有关视图的正确数据,我必须在viewDidAppear中获取大小

在Android中,如果某些视图的大小尚未可用(视图尚未膨胀),那么它只返回零(width == 0,height == 0),但在iOS中,您可以在运行时从Xcode Storyboard获得宽度和高度......真的吗?

ios uiview autolayout constraints frame
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.