![](/img/trans.png)
[英]iOS iPhone - UICollectionView reloading wrong UICollectionViewCell at indexPath
[英]IOS 11: UICollectionView on iPhone X is sized wrong
我有一個集合視圖,框架在 iPhone X 上顯得太高。在其他所有設備上,大小和滾動都正常工作,如下所示:
但是在 iPhone X 上,它看起來像這樣:
頂行被截斷,它不會一直向下滾動到最后一行。 不知何故,調整大小正確計算了寬度而不是高度,大約 70 像素太高了。 (我不擔心頂部和底部欄。稍后我會修復它們)
我猜這與 iPhone X 屏幕的插入調整有關,但我不知道如何修復它。 我已經在我調整集合視圖大小的地方嘗試過這個:
if #available(iOS 11.0, *) {
collectionView.contentInsetAdjustmentBehavior = .always
}
但是,我似乎無法修復它。
編輯:
澄清一下,這個菜單的設置如下,屏幕上實際上有兩個集合視圖。 第一個在啟用分頁的情況下水平滾動,以便鎖定到每個單元格。 其他集合視圖是第一個的單元格,它們垂直滾動。 我們將調用這些 subCollectionViews。
subCollectionViews 正在接收來自太高的原始集合視圖的大小。 在故事板上,集合視圖的高度相對於頂部欄和底部分頁欄定義為齊平。 在故事板中,集合視圖的高度比運行時計算的高度大約 70 個像素。
所以對於單元格的布局指南:
override func awakeFromNib() {
cellImage = UIImageView(frame: contentView.frame)
cellImage?.contentMode = .scaleAspectFill
cellImage?.clipsToBounds = true
contentView.addSubview(cellImage!)
}
對於集合視圖的布局:
layout.scrollDirection = .vertical
layout.minimumLineSpacing = 8
layout.minimumInteritemSpacing = 8
對於故事板預設:
我想這就是你們所要求的。 如果有什么需要看的,盡管問。
我也面臨這個問題。 需要調用safeAreaLayoutGuide來控制item的大小。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if #available(iOS 11.0, *) {
return view.safeAreaLayoutGuide.layoutFrame.size
} else {
// Fallback on earlier versions
return view.frame.size
}
}
添加以下代碼行。 我認為它會解決你的問題。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.aCollectionVew.setNeedsLayout()
self.aCollectionVew.layoutIfNeeded()
}
請獲取所有特征、 spacing
和contentInsetAdjustmentBehavior
。
快樂編碼...:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.