簡體   English   中英

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上測試它,但在Storyboard中我有iPhone 8。

在此輸入圖像描述

在此輸入圖像描述

但我相信當我使用autolayout(約束使我的視圖大小匹配安全區域的大小)時,它應該無關緊要

iPhone 8寬度為375點,iPhone SE為320點:

在此輸入圖像描述

更新

似乎viewDidLoad返回故事板中你最后選擇的設備的大小(非常難看)

因此,要獲得有關視圖的正確數據,我必須在viewDidAppear獲取大小

在Android中,如果某些視圖的大小尚未可用(視圖尚未膨脹),那么它只返回零(width == 0,height == 0),但在iOS中,您可以在運行時從Xcode Storyboard獲得寬度和高度......真的嗎?

當您從故事板中實例化視圖控制器時,其視圖的大小將是故事板上當前設置的大小。 將其添加到視圖層次結構后,它將具有與屏幕相同的大小。 viewDidLoad在添加視圖之前被調用,因此它仍然具有與故事板上相同的大小。 您可以獲得內部方法, viewWillApearviewDidAppearviewDidLayout顯示的大小。 請記住,這些方法可能會被多次調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM