簡體   English   中英

IOS 11:iPhone X 上的 UICollectionView 尺寸錯誤

[英]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()
         }

請獲取所有特征、 spacingcontentInsetAdjustmentBehavior

快樂編碼...:)

暫無
暫無

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

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